Java编程语言中sleep()和yield()的区别

Java编程语言在使用中有很多需要我们学习的,下面我们就来看看sleep()和yield()的区别之间的区别,希望大家在详细学习中有所收获。只有在不断的学习才能更好的使用。

站在用户的角度思考问题,与客户深入沟通,找到射洪网站设计与射洪网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站建设、成都网站制作、企业官网、英文网站、手机端网站、网站推广、域名与空间、网页空间、企业邮箱。业务覆盖射洪地区。

1) sleep()使当前线程进入停滞状态,所以执行sleep()的线程在指定的时间内肯定不会执行;yield()只是使当前线程重新回到可执行状态,所以执行yield()的线程有可能在进入到可执行状态后马上又被执行。

2) sleep()可使优先级低的线程得到执行的机会,当然也可以让同优先级和高优先级的线程有执行的机会;yield()只能使同优先级的线程有执行的机会。

 
 
 
  1. class TestThreadMethod extends Thread{
  2. public static int shareVar = 0;
  3. public TestThreadMethod(String name){
  4. super(name);
  5. }
  6. public void run(){
  7. for(int i=0; i<4; i++){
  8. System.out.print(Thread.currentThread().getName());
  9. System.out.println(" : " + i);
  10. //Thread.yield(); (1)
  11. /* (2) */
  12. try{
  13. Thread.sleep(3000);
  14. }
  15. catch(InterruptedException e){
  16. System.out.println("Interrupted");
  17. }}}
  18. }
  19. public class TestThread{
  20. public static void main(String[] args){
  21. TestThreadMethod t1 = new TestThreadMethod("t1");
  22. TestThreadMethod t2 = new TestThreadMethod("t2");
  23. t1.setPriority(Thread.MAX_PRIORITY);
  24. t2.setPriority(Thread.MIN_PRIORITY);
  25. t1.start();
  26. t2.start();
  27. }
  28. }

运行结果为:

 
 
 
  1. t1 : 0
  2. t1 : 1
  3. t2 : 0
  4. t1 : 2
  5. t2 : 1
  6. t1 : 3
  7. t2 : 2
  8. t2 : 3

由结果可见,通过sleep()可使优先级较低的线程有执行的机会。注释掉代码(2),并去掉代码(1)的注释,结果为:

 
 
 
  1. t1 : 0
  2. t1 : 1
  3. t1 : 2
  4. t1 : 3
  5. t2 : 0
  6. t2 : 1
  7. t2 : 2
  8. t2 : 3

可见,调用yield(),不同优先级的线程永远不会得到执行机会。

以上就是对Java编程语言的相关介绍,希望大家有所帮助。

名称栏目:Java编程语言中sleep()和yield()的区别
分享地址:http://www.shufengxianlan.com/qtweb/news11/493661.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联