ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java线程中sleep()和yield()以及join()的区别?

2021-09-14 15:34:59  阅读:126  来源: 互联网

标签:join yield 线程 sleep 方法 cpu


sleep()与yield()需要区分比较?

相同点:

  sleep()方法和yield()方法都是Thread类中的静态方法,都会使当前线程放弃cpu的使用,把cpu的运行机会让给别的线程。

不同点:

  1.sleep()方法把cpu让给其它线程,不会考虑其它线程的优先级,因此会给低级别的线程运行cpu的机会;yield()方法只会给与当前线程同一优先级别或者更高优先级的线程运行cpu的机会。

  2.当线程执行sleep(mils)后,当前线程会进入阻塞状态,参数mils指定休眠时间,休眠时间到后线程进入就绪状态;yield()执行后,当前线程是进入就绪状态。

  3.sleep()方法申明抛出InterruptedException异常;yield()方法没有申明抛出任何异常。

  4.sleep()方法比yield()方法具有更好的可移植性。不能依靠yield()方法来提高程序的并 发行能。对于大多数程序员来说,yield()方法的唯一用途是在测试期间人为地提高程 序的并发性能,以帮助发现一些隐藏的错误。

 

join()方法?

  运行中的线程A,可以调用线程B的join()方法,一旦调用A线程将进入阻塞状态,直到B线程执行结束,A才能恢复到就绪状态。join()有两个重载形式,join()和join(TimeOut),即可以设置A线程醒来的时间。  

 

标签:join,yield,线程,sleep,方法,cpu
来源: https://www.cnblogs.com/llyBruce/p/15267522.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有