问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
你好,欢迎来到懂视!登录注册
当前位置: 首页 - 正文

请教一个关于pthread

发布网友 发布时间:2023-01-13 14:43

我来回答

1个回答

热心网友 时间:2023-11-05 00:34

 在正式学习Thread类中的具体方法之前,我们先来了解一下线程有哪些状态,这个将会有助于后面对Thread类中的方法的理解。

  线程从创建到最终的消亡,要经历若干个状态。一般来说,线程包括以下这几个状态:创建(new)、就绪(runnable)、运行(running)、阻塞(blocked)、time waiting、waiting、消亡(dead)。

  当需要新起一个线程来执行某个子任务时,就创建了一个线程。但是线程创建之后,不会立即进入就绪状态,因为线程的运行需要一些条件(比如内存资源,在前面的JVM内存区域划分一篇博文中知道程序计数器、Java栈、本地方法栈都是线程私有的,所以需要为线程分配一定的内存空间),只有线程运行需要的所有条件满足了,才进入就绪状态。

  当线程进入就绪状态后,不代表立刻就能获取CPU执行时间,也许此时CPU正在执行其他的事情,因此它要等待。当得到CPU执行时间之后,线程便真正进入运行状态。

  线程在运行状态过程中,可能有多个原因导致当前线程不继续运行下去,比如用户主动让线程睡眠(睡眠一定的时间之后再重新执行)、用户主动让线程等待,或者被同步块给阻塞,此时就对应着多个状态:time waiting(睡眠或等待一定的事件)、waiting(等待被唤醒)、blocked(阻塞)。

  当由于突然中断或者子任务执行完毕,线程就会被消亡。

  下面这副图描述了线程从创建到消亡之间的状态:

  在有些教程上将blocked、waiting、time waiting统称为阻塞状态,这个也是可以的,只不过这里我想将线程的状态和Java中的方法调用联系起来,所以将waiting和time waiting两个状态分离出来。

二.上下文切换

  对于单核CPU来说(对于多核CPU,此处就理解为一个核),CPU在一个时刻只能运行一个线程,当在运行一个线程的过程中转去运行另外一个线程,这个叫做线程上下文切换(对于进程也是类似)。

  由于可能当前线程的任务并没有执行完毕,所以在切换时需要保存线程的运行状态,以便下次重新切换回来时能够继续切换之前的状态运行。举个简单的例子:比如一个线程A正在读取一个文件的内容,正读到文件的一半,此时需要暂停线程A,转去执行线程B,当再次切换回来执行线程A的时候,我们不希望线程A又从文件的开头来读取。

  因此需要记录线程A的运行状态,那么会记录哪些数据呢?因为下次恢复时需要知道在这之前当前线程已经执行到哪条指令了,所以需要记录程序计数器的值,另外比如说线程正在进行某个计算的时候被挂起了,那么下次继续执行的时候需要知道之前挂起时变量的值时多少,因此需要记录CPU寄存器的状态。所以一般来说,线程上下文切换过程中会记录程序计数器、CPU寄存器状态等数据。

  说简单点的:对于线程的上下文切换实际上就是 存储和恢复CPU状态的过程,它使得线程执行能够从中断点恢复执行。

  虽然多线程可以使得任务执行的效率得到提升,但是由于在线程切换时同样会带来一定的开销代价,并且多个线程会导致系统资源占用的增加,所以在进行多线程编程时要注意这些因素。
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
形容说的不诚实 不诚实用什么词语形容 网页打开慢的解决方法 网页打开速度慢怎么办 女性感染霉菌会引起什么症状 霉菌感染阴道有什么症状表现 女性霉菌感染的症状 三星冰箱外显和内显哪个使用寿命长 双循环冰箱寿命一般几年 我想开通手机上网流量为什么还需要什么手机密码? 怎么才能减脸上的肉啊? 上门磁五包一什么意思 站岗五包一是什么意思 易经在哪里可以看 五包一上门采样是什么意思 再向虎山行第40集大结局是什么 鼠标滑轮滚动不顺畅 酒瓶黄铁盖上有五个红平行四边形什么意思 埃安vplus有没有千斤顶 埃安v方向盘尺寸 广汽埃安vplus是埃安v的替换品吗 2022年清明扫墓上坟用真花还是假花 专业调理肺热咳嗽的食疗 56万等额本息十五年,已经还了两年了如果一次性付清需要多少钱 电动车电源锁坏了 灰石300摩托车换电锁方法 现代e派显示器插电源屏幕不亮 《腾讯会议》小窗口开启方法 萧敬腾最好听的十首歌 红米k50至尊版怎么在玩游戏的时候刷抖音 阖家安康的下一句? 上海宝冶跟中建八局哪个好 上海宝冶能环是分公司还是子公司 二手詹姆斯13精英可以买吗 松下普利司通自行车怎 National Category在自行车赛里是什么意思? 蚌埠城南发展有后劲吗 电视家怎么调电视集数 《电视家3.0》硬件加速设置方法 《电视家》开机自动启动设置方法 《电视家3.0》自动启动设置方法 宝宝出生第八天肚子里咕咕叫是不是着凉啦 鱼塘钓草鱼怎样调浮这两个小技巧要知道 介绍此新型蔬菜营养价值如何 抱子甘蓝有什么营养价值 现求 一个 photoshop 制作的节能环保创意海报 侠盗飞车罪恶都市所有隐藏车的分布地,要图片加文字(任务重的隐藏车和费任务的隐藏车都要) 罪恶都市隐藏车问题 大家都来说下华为荣耀6手机换屏幕多少钱 如何有效舒缓经痛?生理期必备知识 cfa一级该如何备考
  • 焦点

最新推荐

猜你喜欢

热门推荐