Java线程状态

5种状态,任意时刻,一个线程只能处于其中一个状态

- 新建 创建后尚未启动

- 运行 包括 Running和Ready,也就是有可能线程正在执行,或者正在等待cpu为它分配时间

- 无限期等待 Waiting 不会被分配cpu执行时间,需要被其他线程唤醒。比如以下方法

没有设置Timeout的Object.wait

没有设置Timeout的Thread.join

LockSuport.park

- 限期等待 Timed Waiting

这种也不会分配cpu时间,不过不需要其他线程唤醒,而是过一定时间被系统自动唤醒。以下方法会让线程进入限期等待

Thread.sleep

设置了Timeout的Object.wait

设置了Timeout的Thread.join

LockSuport.parkNanos

LockSuport.parkUntil

- 阻塞

阻塞和等待的区别是,阻塞是在等待着获取一个排他锁,这个事件将在另外一个线程放弃这个锁的时候发生,而等待状态是要么等待唤醒动作,或者过一段时间发生。阻塞状态是程序进入同步区域的时候发生的

- 结束 Terminared 线程结束


图片发自App

你可能感兴趣的:(Java线程状态)