社区
Java SE
帖子详情
线程的礼让问题
同学请坐の
2018-08-24 12:54:52
为什么有时i==3的时候会输出线程礼让,而有时不输出呢???求解
...全文
471
6
打赏
收藏
线程的礼让问题
为什么有时i==3的时候会输出线程礼让,而有时不输出呢???求解
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
qq_39936465
2018-09-14
打赏
举报
回复
建议你在“线程礼让“前也加个线程名不就一目了然了。
qq_39936465
2018-09-14
打赏
举报
回复
其实都输出了,不过是显示误导了你,因为进程执行时间有误差的。
第一个情况是 a进程执行到i=3 并打印了 进程名,但还没有执行了礼让,这时候 b进程也执行了i=3 并先与a执行礼让打印了 进程名,然后a进程执行礼让后,b进程执行礼让。
第2个情况是 a进程执行更快执行过了打印进程名,并开始执行礼让时 b进程还没有执行 i=3 后的打印进程名。
这种情况发生很正常。
Dan淡淡的心
2018-08-24
打赏
举报
回复
Java线程中的Thread.yield( )方法,译为线程让步。顾名思义,就是说当一个线程使用了这个方法之后,它就会把自己CPU执行的时间让掉, 让自己或者其它的线程运行,注意是让自己或者其他线程运行,并不是单纯的让给其他线程。 yield()的作用是让步。它能让当前线程由“运行状态”进入到“就绪状态”,从而让其它具有相同优先级的等待线程获取执行权;但是,并不能保 证在当前线程调用yield()之后,其它具有相同优先级的线程就一定能获得执行权;也有可能是当前线程又进入到“运行状态”继续运行! 举个例子:一帮朋友在排队上公交车,轮到Yield的时候,他突然说:我不想先上去了,咱们大家来竞赛上公交车。然后所有人就一块冲向公交车, 有可能是其他人先上车了,也有可能是Yield先上车了。 但是线程是有优先级的,优先级越高的人,就一定能第一个上车吗?这是不一定的,优先级高的人仅仅只是第一个上车的概率大了一点而已, 最终第一个上车的,也有可能是优先级最低的人。并且所谓的优先级执行,是在大量执行次数中才能体现出来的。
Surrin1999
2018-08-24
打赏
举报
回复
我以为你说怎么有时没输出= = 不过回答的方向是对的
Surrin1999
2018-08-24
打赏
举报
回复
你这个不是都输出了吗....上面那种情况是刚输出完A正在执行3 另一个线程就抢走了CPU控制权, 输出它的B正在执行3 然后各自礼让 输出对应的线程礼让: 下面那个是礼让语句执行了但没有交出CPU控制权(
礼让机制并不能保证另一个线程一定拿到CPU控制权 真正要做到请加同步锁
) 所以会继续输出线程礼让
qq_37257058
2018-08-24
打赏
举报
回复
线程礼让你改成换行输出,我觉得只是输出的格式困扰了你,没弄清问题本质,没你说的什么输出不输出的问题
18.4.4
线程
的
礼让
.mp4
18.4.4
线程
的
礼让
.mp4
线程
的基本概念、
线程
类、任务类、
线程
优先级、sleep()方法、yield()方法、join方法、interrupt()方法
线程
的基本概念、
线程
类、任务类、
线程
优先级、sleep()方法(休眠)、yield()方法(
礼让
)、join方法(合并)、interrupt()方法(中断),
线程
的生命周期
线程
与 进程 的关系:**有一个进程中至少包含一个
线程
**
线程
与
线程
的关系:**在同一个进程里,多个
线程
共享内存空间和系统资源 一个进程中包含多个
线程
,只有一个主
线程
线程
的休眠是指让
线程
暂时停止执行一段时间,然后再继续执行。在休眠期间,
线程
不会占用CPU资源,可以用来等待某个条件满足或者定时执行任务。
线程
的
礼让
是指一个
线程
主动让出CPU资源,使其他
线程
有机会执行。在Java中,可以使用Thread类的yield()方法实现
线程
的
礼让
。
线程
的合并是指一个
线程
等待另一个
线程
执行完毕后再继续执行。在Java中,可以使用Thread类的join()方法实现
线程
的合并。
线程
的中断是指在一个
线程
中断另一个
线程
的执行。在Java中,可以使用Thread类的interrupt()方法实现
线程
的中断。(run方法执行完毕)
Java多
线程
基础-优秀程序员
源码简介01_串行与并发02_进程与
线程
"03
线程
寿命04.
线程
开发05_
线程
命名06_
线程
休眠07_
线程
优先级08_
线程
礼貌09_关键资源
问题
关键../等待...源码详情01_串行与并发02_进程与
线程
"03
线程
的生命04.
线程
的开辟05_
线程
的命名06_
线程
的休眠07_
线程
的优先08_
线程
的
礼让
09_临界资源问匙../等等....
Java
线程
状态变换过程代码解析
主要介绍了Java
线程
状态变换过程代码解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
Java多
线程
状态及方法实例解析
主要介绍了Java多
线程
状态及方法实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
Java SE
62,630
社区成员
307,264
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章