|
|
51CTO旗下网站
|
|
移动端

1.2.4 sleep和yield的区别

《Java多线程与Socket:实战微服务框架》第1章多线程基础,本书尽量采用简要和通俗易懂的方式来介绍多线程知识。本节为大家介绍sleep和yield的区别。

作者:庞永华来源:电子工业出版社|2019-03-26 15:45

【大咖·来了 第7期】10月24日晚8点观看《智能导购对话机器人实践》

1.2.4 sleep和yield的区别

区别如下:

. 线程执行sleep()方法后转入阻塞(BLOCKED)状态,并在“睡眠”一段时间后自动“醒来”,回到就绪(RUNNABLE)状态。而执行yield()方法后,当前线程转入的是就绪(RUNNABLE)状态。

. 当前线程执行sleep()方法后,其他线程无论优先级高低,都有机会得以运行;而执行yield()方法只会给那些具有相同优先级或更高优先级的线程运行的机会。

. sleep()方法需要声明抛出InterruptedException,而yield()方法没有声明任何异常。

. sleep()方法比yield()方法(与操作系统的CPU调度相关)具有更好的可移植性。如果在循环中使用yield()方法,则在Linux上容易导致“死循环”—当前线程在yield()后总是又立即抢占到CPU,导致其他线程得不到执行。


喜欢的朋友可以加入官方的读书群

51CTO读书频道二维码


51CTO读书会第9群:808517103

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

订阅专栏+更多

Jenkins Pipeline可持续化集成

Jenkins Pipeline可持续化集成

优化运维流水线
共3章 | youerning

198人订阅学习

笑熬浆糊之职场那些事

笑熬浆糊之职场那些事

IT人的职场心法
共22章 | Bear_Boss

79人订阅学习

Redis运维秘籍

Redis运维秘籍

运维标配技术
共15章 | one叶孤舟

199人订阅学习

读 书 +更多

八万里路云和月——一个国家扶贫开发工作重点县的

通榆,这个距离各个交通枢纽都十万八千里的偏僻小县城,搭载着电子商务的快车,踏上了云高速,开辟了如火如荼的电商致富的新战场,实现了一...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊

51CTO服务号

51CTO播客