美文网首页程序员
java控制线程(三)

java控制线程(三)

作者: RoundYuan | 来源:发表于2019-01-13 18:45 被阅读0次

通常用来暂停程序的执行。

下面程序调用sleep()方法来暂停主线程的执行,因为该线程只有一个主线程,当主线程进入睡眠后,系统没有
可执行的线程,所以可以看到程序在sleep()方法暂停。

线程让步:yield

yield()方法是一个和sleep()方法有点类似的方法,它也是Thread类提供的一个静态方法,它也可以让当前正在
执行的线程暂停,但它不会阻塞该线程,它只是将该线程转入就绪状态。
yield()只是让当前线程暂停一下,让系统的线程调度器重新调度一次,完全可能的情况是:
当某个线程调用了yield()方法暂定之后,线程调度器又将其调度出来重新执行。

sleep和yield的区别:
1、sleep()方法暂停当前线程后,会给其他线程执行机会,不会理会其他线程的优先级,只会给优先级相同,或
优先级更高的线程执行机会。

2、sleep方法会将线程转入阻塞状态,直到经过阻塞时间才会转入就绪状态;而yield不会将线程转入阻塞状态,
它只是强制将当前线程进入就绪状态。因此完全有可能某个线程调用yield()方法暂停后,立即再次获得处理器资源被
执行了。

3、sleep()方法声明抛出了InterruptedException异常,所以调用sleep()方法时要么捕捉该异常,要么显示的抛出该异常
而yield()方法则没有声明抛出任何异常。

4、sleep()方法比yield()方法有更好的可移植性,通常不建议使用yield方法来控制并发线程的执行。

sleep是俄罗斯总统普京,告诉梅德韦杰夫我下去缓两年,然后我再回来再当总统

而yield,则是一个虚伪的官员告诉大家这个我先卸任咱公平竞争,但是只有和你同一级,或高级的才有资格竞争

相关文章

  • 2018-01-26

    ##Java线程 Java中,并发的基本单元是线程,可以将线程看作控制流(thread of control)。线...

  • 2018-01-26 - 草稿

    ##Java线程 Java中,并发的基本单元是线程,可以将线程看作控制流(thread of control)。线...

  • java控制线程(三)

    通常用来暂停程序的执行。 下面程序调用sleep()方法来暂停主线程的执行,因为该线程只有一个主线程,当主线程进入...

  • java控制线程(一)

    java控制线程(一) java的线程支持提供了一些便捷的工具方法: join线程:Thread提供了让一个线程等...

  • Java线程同步:synchronized

    Java线程同步:synchronized在Java中,synchronized关键字是用来控制线程同步的,就是在...

  • java多线程(六)---Java内存模型

    1 Java内存模型(JMM) Java线程间的通信由Java内存模型(JMM)控制,JMM决定一个线程对共享变量...

  • Java多线程

    Java多线程 1. 进程与线程 线程:程序中单独的控制流线程本身依靠程序进行运行线程是程序中的顺序控制流,只能使...

  • 带你搞懂Java多线程(五)

    带你搞懂Java多线程(一)带你搞懂Java多线程(二)带你搞懂Java多线程(三)带你搞懂Java多线程(四) ...

  • Java多线程的一些简单概念

    1、线程是一个程序内部的顺序控制流;2、线程与进程的区别: 3、java线程通过java.lang.Thread类...

  • 带你搞懂Java多线程(六)

    带你搞懂Java多线程(一)带你搞懂Java多线程(二)带你搞懂Java多线程(三)带你搞懂Java多线程(四)带...

网友评论

    本文标题:java控制线程(三)

    本文链接:https://www.haomeiwen.com/subject/tgeldqtx.html