【2013-12-12】【转】《Java编程思想》读书笔记:sleep yield
2026/7/15 6:04:57 网站建设 项目流程

[历史归档]本文原发布于 cstriker1407.info 个人博客,内容为历史存档,仅供参考。
发布时间:2013-12-12| 标题:【转】《Java编程思想》读书笔记:sleep && yield分类:编程 / java / think_in_java |标签:java·think in java·多线程·yield&&sleep


《Java编程思想》读书笔记:sleep && yield

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

转自【 http://developer.51cto.com/art/201003/189465.htm 】

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

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

  1. sleep()使当前线程进入停滞状态,所以执行sleep()的线程在指定的时间内肯定不会执行;yield()只是使当前线程重新回到可执行状态,所以执行yield()的线程有可能在进入到可执行状态后马上又被执行。
  2. sleep()可使优先级低的线程得到执行的机会,当然也可以让同优先级和高优先级的线程有执行的机会;yield()只能使同优先级的线程有执行的机会。
classTestThreadMethodextendsThread{publicstaticintshareVar=0;publicTestThreadMethod(Stringname){super(name);}publicvoidrun(){for(inti=0;i<4;i++){System.out.print(Thread.currentThread().getName());System.out.println(" : "+i);//Thread.yield(); (1)/* (2) */try{Thread.sleep(3000);}catch(InterruptedExceptione){System.out.println("Interrupted");}}}}publicclassTestThread{publicstaticvoidmain(String[]args){TestThreadMethodt1=newTestThreadMethod("t1");TestThreadMethodt2=newTestThreadMethod("t2");t1.setPriority(Thread.MAX_PRIORITY);t2.setPriority(Thread.MIN_PRIORITY);t1.start();t2.start();}}

运行结果为:

t1 : 0 t1 : 1 t2 : 0 t1 : 2 t2 : 1 t1 : 3 t2 : 2 t2 : 3

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

t1 : 0 t1 : 1 t1 : 2 t1 : 3 t2 : 0 t2 : 1 t2 : 2 t2 : 3

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

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

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询