【发布时间】:2010-07-18 10:51:52
【问题描述】:
Thread.yield() 之后的线程的Thread.State 是什么?是Thread.State.WAITING 吗?谢谢。
【问题讨论】:
标签: java concurrency
Thread.yield() 之后的线程的Thread.State 是什么?是Thread.State.WAITING 吗?谢谢。
【问题讨论】:
标签: java concurrency
不,线程仍将处于RUNNABLE 状态。请注意,RUNNABLE 表示线程可以运行,并且可能当前正在运行或等待轮到它。 Thread.STATE 不区分当前正在执行的线程和准备运行的线程,它们都是RUNNABLE。
只有在调用wait()、join() 或LockSupport.park() 时,线程才会进入WAITING 状态。
通过调用Thread.yield() 方法,当前正在运行的线程自愿放弃其CPU 时间片。然后该线程从运行回到就绪状态。
【讨论】:
yield() 是向系统发出的通知,它应该让其他线程有机会运行。如果没有其他事情可做,线程可以简单地继续执行。