线程——线程初识之基本概念

线程的基本概念 线程基本概念前言1.线程和进程的基本概念2.实现线程的方式(2种)3.进程的基本状态(运行中)4.简单说一下stop()和suspend()方法为何不推荐使用5.sleep()和wait()的区别6.synchronize7.同步准则8.线程死锁9.线程池10.程序、进程、线程之间的关系11.线程状态11.线程currentThread()与interrupt()方法的使用 前言 在此整理一下自己... 阅读详情

线程初识:

  1. 线程是轻量级的进程:

    A. 线程不具备私有空间。

    B. 因为资源共享,父线程结束,则子线程无可苟活。

    a. 因此要使儿女线程正常存活,我们必须确保父亲的安全健康。

    C. 每个线程有标识自己身份的id为tid。

    D. 同一线程家族继承主线程(主进程)的资源。

    E. 若某个线程族受到进程级的打击,则该族线程全部都会被影响。

    F. 不同线程家族之间不产生联系。

  2. 线程只有父子和兄弟。

    只有两代人,即父线程创建的线程是他的子线程,子线程创建的线程是自己的兄弟。因为子线程没有自己的资源,只是继承了父线程的资源。

  3. 线程较之于进程优缺:

    最大优点是快。

    调度

    线程是程序调度的基本单位。

    进程是资源分配的基本单位

  4. 线程为第三方库提供,意味着所有线程在用户空间运行。本来进程时代,所有人都需要父进程管理,而现在,我们会找一个主线程作为小组长,帮助父进程管理。

  5. 查看线程

$ ps aux -H
$ pstree -ap

pstree时{} 包裹的为线程

  1. 所有线程都共用的是父线程的pid,所以调用getpid()时得到的都是主线程即父线程的pid。每一个线程都具有进程pid的身份,每个线程都有,一个pid。

  2. 线程id即tid,只在一个进程空间有效,用以标记每个线程的身份。所以,要对线程做操作的话,用tid进程操作。

  3. 主线程pid存在但是被常被我们使用,我们只使用标识线程身份的tid。

  4. 不同进程内的线程要进行交流的话,其实是以其父亲的进程身份进行通信交流。而不是两个线程直接通信。

  5. 各进程之间相同tid并没有什么必要联系。

  6. syscall(SYS_gettid);
    syscall 层次特别低,最接近于内核,移植性特别差。上述调用可以得到自己的tid

多线程基本概念 基本概念 进程 (Process):一个程序运行起来时在内存中开辟一段空间用来运行程序,这段空间包括 heap、stack、data segment 和 code segment。例如,开一个 QQ 就表明开了一个 QQ 进程。 线程 (Thread):每一个进程中都至少有一个线程。线程是指程序中代码运行时的运行路径,一个线程表示一条路径。例如 QQ 进程中,发送消息、接收消息、接收文件、... 阅读详情

相关推荐

量化爬虫第一步:手把手教你搞定同花顺问财的hexin-v参数(附JS逆向实战)

本文详细介绍了如何通过JS逆向技术破解同花顺问财数据接口的核心加密参数hexin-v,构建稳定可靠的量化数据采集方案。从抓包分析到Cookie Hook技术应用,再到环境补全与参数生成实现,手把手教你完成量化爬虫的第一步。文章还提供了实战注意事项与优化建议,帮助开发者规避常见问题。

weixin_42620202的博客 304

多线程并行转为串行线程运行

简单事例:妈妈在做饭,突然没盐了,让儿子去买盐线程1:妈妈线程2:儿子妈妈在做饭,突然没盐了,妈妈线程通知儿子买盐,启动儿子线程,儿子买完盐回来,妈妈线程继续运行做饭package demo5;妈妈类继承Thread类 实现多线程public class Mom extends Thread { public void run(){ try { System.out.println("妈...

可爱的程序yuan 3390

Verilog基本代码结构及常用语句always、begin...end解读

Verilog基本代码结构及常用语句always、begin...end解读 线性反馈以为寄存器(LFSR)

weixin_62380586的博客 1万+

多线程之儿子买盐问题

  刚刚看到了一关于多线程的面试题目,就试着写了一下。   题目: 模拟妈妈做饭,做饭时发现没有盐了,让儿子去买盐。只有盐买回来之后,妈妈才能继续做饭的过程。   问题分析:既然是面向对象编程,拿到问题是首先就要分析涉及到哪些对象。显然,该问题涉及的对象有:妈妈、儿子和盐。其中妈妈和儿子都是线程类,共享资源就是盐,所以盐Salt类的方法都要设置为同步方法。具体代码如下: ...

daxiang3255的博客 196

最邻近点对问题(Closest-Pair Problem):二维的分治解法详解

低维时,最邻近点对问题可以利用分治求解。但是网络上相关资料良莠不齐,对于3维甚至难有有价值的参考。最近恰巧梳理了123维最邻近点对问题的相关知识,故在此分享。这是该系列的第二篇,介绍二维情况的分治解法。

Carl_Rabbit的博客 1万+

手把手教你用Arduino搭建惠斯通电桥:从原理到代码实现(附完整电路图)

本文详细介绍了如何利用Arduino搭建惠斯通电桥,从硬件选型、电路设计到代码实现和校准技巧,提供完整的电路图和实用代码示例。特别适合电子爱好者和创客学习高精度电阻测量技术,并扩展应用于应变片测量和温度监测等实际项目。

o4p5q6r7s的博客 401

CountDownLatch学习理解

最近因为一个需求接触到了CountDownLatch:一个界面的渲染需要多个接口返回的数据,所以接口全部返回才能执行渲染操作。 通过一个例子理解CountDownLatch: 利用CountDownLatch等待子线程全部执行完 妈妈有四个孩子,到午餐时间,妈妈需要等待孩子们全部吃完才开始收拾碗筷,每个孩子吃完就会告诉妈妈“我吃完啦”,当四个孩子全吃完了,妈妈开始收拾。 与CountD...

wqy161109的博客 451

java之多线程

java之多线程 参考书目: 《java编程思想》 《java典型模块与项目实战大全》 多线程知识点 项目实例 多线程同时结束 多个学生接完水一起回教室 线程A等待B完成 妈妈做菜等儿子打酱油 多线程安全 火车站票务管理 1. 线程的五个状态 new(创建) runable(等待运行)、 running(运行)、 blocked(暂停、挂起) dead(结束) 它们...

luhao19980909的博客 353

ICM20948 DMP代码详解(54)

ICM20948 DMP代码详解(54)

phmatthaus的专栏 424

运行 ui5 serve 命令行报错的处理方法

如果大家运行 ui5 serve 命令行,报如下的错误消息: ui5 不是内部或外部命令,也不是可运行的程序: 只需要执行命令行,全局安装 ui5 cli(command line interface)这个命令行工具即可: npm install --global @ui5/cli 这个 ui5 cli 的入口执行文件,实际安装在了我 Node.js 的安装目录下: 更多Jerry的原创文章,尽在:“汪子熙”: ...

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1341

多线程模拟-爸爸放橙子给女儿吃,妈妈放苹果给儿子吃

模拟这个游戏: 有一个空盘子一次只能放入一个水果。爸爸放入一个橙子,只有女儿会拿起来吃。妈妈放入一个苹果,只有儿子会拿起来吃。 依次生成这4个线程,利用信号量来同步这4个线程,利用互斥锁来解决爸爸和妈妈争用空盘子的冲突,防止死锁。 当儿子一共吃过8个苹果时,结束整个游戏。 #include #include #include #include #include #include

yilonglucky 3591

面向可扩展的 ABAP CDS:EXTEND VIEW 全面实战与工程化指引

摘要: 本文深入讲解ABAP CDS的EXTEND VIEW功能,帮助开发者在标准或自建模型上安全扩展字段与关联。核心内容包括: 作用:避免直接修改标准CDS,通过轻量扩展添加业务字段和关联,降低维护风险。 语法要点:需定义CDS扩展实体名和Dictionary Append View名,支持添加普通字段、关联,但不允许聚合或修改原有结构。 限制:不能扩展含聚合、UNION的视图,且扩展字段需避免命名冲突。 工程实践:建议使用客户命名空间,区分结构扩展与元数据扩展,并注意功能性变更需通过其他方式实现。 示例

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 394

初识linux之线程基本概念

本文主要介绍了线程的概念和在linux下如何创建线程及进程与线程的关系

Masquerena114514的博客 597

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

JAVA笔记 - 线程专栏 —— 初识进程、线程和多线程的基本概念(新手向)

1. 多线程的引入 1.1 线程概述 几乎所有操作系统都支持同时运行多个线任务,一个任务通常可以看作一个程序,而每个运行中的程序就是一个进程。当一个程序在运行时,内部可能包含了多个顺序执行流,每一个流就是一个线程。 1.1.1 进程与线程(了解) 1.1.1.1 进程: 所有运行中的任务对应一个进程(Process),当一个程序进入内存运行时,则变成一个进程。 进程是处于运行中的程序,并且具有一定的独立功能,是系统进行资源分配和调度的一个独立单位。一般而言,进程有以下三个特征: 独立性:进.

apple_52225972的博客 399

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

高并发专题(一)--基本概念和线程初识

什么是高并发 单核计算机发展的性能局限性 著名的摩尔定律失效。当代的CPU效率基本定格在4GHz,这么意味着若是使用一个CUP在一台机器上,那么无论其他硬件多么优秀,瓶颈将出在CPU的计算能力。因此为了提升机器的性能,现在得计算机一般采用多CPU或超线程的方式来提升机器的性能。这样在同一时刻,机器的运算不能就不再局限于4GHz。超线程是指将CPU的逻辑内核模拟成物理芯片,从而达到并行执行的目的,提...

lovelingforever0的博客 426

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Linux多线程【初识线程】

将一份代码成功编译后,可以得到一个可执行程序,程序运行后,相关代码和数据被load到内存中,并且操作系统会生成对应数据结构(比如PCB)对其进行管理及分配资源,准备工作做完之后,我们就可以得到一个运行中的程序,简称为进程,对于操作系统来说,光有进程的概念是无法满足高效运行的需求的,因此需要一种执行粒度更细、调度成本更低的执行流,而这就是线程Windows中的线程

北 海的博客 2701

【Linux】初识线程

建立线程的概念,理清线程和进程的关系,简单创建一个线程

s_little_monster的博客 9165

多线程基础系列-多线程初识

多线程的初步介绍,包含 线程和进程、线程的状态、线程的创建

囚徒之困 1235

Linux多线程——线程的基本概念

摘要 本文深入探讨了操作系统中的进程与线程概念。线程作为轻量级执行单元,相比进程具有更低的创建和切换开销,能够提高程序并发性。在Linux系统中,线程通过复用进程管理机制实现,表现为轻量级进程(LWP),共享相同的虚拟地址空间和资源。文章详细分析了线程与进程的关系、地址空间管理机制,以及多线程编程的优势与挑战,包括性能提升、资源共享带来的同步问题等。通过代码示例,展示了多线程程序的运行特点及线程异常对进程的影响,为深入理解操作系统调度机制提供了理论基础。

2401_83603768的博客 1223

<Linux> 初识线程

线程基本概念、虚拟地址空间的重新认识、详解页表原理、局部性原理、关于动态内存管理的扩展、线程优缺点

weixin_61522065的博客 1172

【多线程】线程的基本概念

一、前言: 提及多线程不得不提及“进程”这个概念。“百度百科”里对“进程”的解析如下:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。 初看这个文字会觉得十分的抽象,难以理解。但看到下面的图片,大家可能会对“进程”有一个感性的认知。一个PID对应一个进程。...

柠檬树 9892

初识多线程

运行:可以看到如果不手动终止这个程序,就会无限打印下去。Callable是一个“锦上添花”的东西,它能干的事情,使用Runnable也能干。多线程的随机性是指在多线程编程环境中,多个线程的执行顺序、对共享资源的访问顺序以及它们之间的交互。Runnable关注的是这个过程,不关注执行结果。Callable要关注执行结果,Callable提供的call方法,的任务,使用Callable会更好一些。这种不确定性主要源于操作系统的线程调度机制。要观察这种特性,就要有2个及以上的线程。因为所有的方式的本质都是。

t1750982356的博客 3185

线程基本概念详解

本文只是粗略的讲解了一下有关线程的问题,讲的并不是非常的完全。还有很多可以写,但是万般头绪慢慢来,刚开始写只是列了一个大纲,然后越写越多,发现打不住头了,只写了一些线程的概念和实现的方法,线程的作用什么的。匿名内部线程什么的。写的时候在网上也找了部分自己感觉好的解释和例子。后面在开章写线程的同步,异步等问题。本文如果发现有问题,欢迎留言指正。感谢!   讲线程之前先讲一个进程的概念:进程(Pr...

这个屌人啥也没有… 2799
上一篇: 线程——基本函数
下一篇: (一)unity 初步——Unity 简述
Riyadh_linux
博客等级 码龄11年 11粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值