sleep(),yield()

Posted wuchao0508

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sleep(),yield()相关的知识,希望对你有一定的参考价值。

sleep 方法使当前运行中的线程睡眼一段时间,进入不可运行状态,这段时间的长短是由程序设定的,不会释放锁标志。

yield 方法使当前线程让出CPU占有权,但让出的时间是不可设定的。yield()也不会释放锁标志。

yield()方法对应了如下操作: 先检测当前是否有相同优先级的线程处于同可运行状态,如有,则把 CPU 的占有权交给此线程,否则继续运行原来的线程。所以yield()方法称为"退让",它把运行机会让给了同等优先级的其他线程。

sleep方法允许较低优先级的线程获得运行机会,但yield()方法执行时,当前线程仍处在可运行状态,所以不可能让出较低优先级的线程些时获得CPU占有权。 在一个运行系统中,如果较高优先级的线程没有调用 sleep 方法,又没有受到 I/O阻塞,那么较低优先级线程只能等待所有较高优先级的线程运行结束,才有机会运行。

yield()只是使当前线程重新回到可执行状态,所以执行yield()的线程有可能在进入到可执行状态后马上又被执行。所以yield()只能使同优先级的线程有执行的机会。

以上是关于sleep(),yield()的主要内容,如果未能解决你的问题,请参考以下文章

sleep和yield的区别

java中线程里的sleep的用法与yield的用法~

线程的 sleep()方法和 yield()方法有什么区别?

线程的 sleep()方法和 yield()方法有什么区别?

多线程学习-基础sleep()和yield()的区别(理论)

线程的sleep()方法和yield()方法区别