个性化阅读
专注于IT技术分析

j艾薇a 线程状态转换图解

j艾薇a线程状态转换图

j艾薇a线程运行过程中的各个状态的转换如下图:

实例化后New

New–>RUNNABLE

Thread.start() ==>系统调度

? running—>ready <==Thread.yield

? ready–>running

RUNNABLE–>WAITING Object.wait() Thread.join() LockSupport.park()

RUNNABLE–>TIME_WAITING Object.wait(long) Thread.sleep(long) Thread.join(long) LockSupport.parkNanos() LockSupport.parkUntil()

RUNNABLE–>BLOCKED 等待进入synchronized方法 等待进入synchronized块

RUNNABLE–>TERMINATED

WAITING–>RUNNABLE Object.notify() Object.notifyAll() LockSupport.unpark(Thread)

TIME_WAITING–>RUNNABLE Object.notify() Object.notifyAll() LockSupport.unpark(Thread)

BLOCK–>RUNNABLE

yield

暂停当前正在执行的线程对象。

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

yield()只能使同优先级或更高优先级的线程有执行的机会。

yield()从未导致线程转到等待/睡眠/阻塞状态。在大多数情况下,yield()将导致线程从运行状态转到可运行状态,但有可能没有效果。

赞(0)
未经允许不得转载:srcmini » j艾薇a 线程状态转换图解