线程状态
java.lang.Thread.State
里明确了线程的各个状态以及怎么进入和退出各个状态
public enum State {
// 初始化状态,线程创建之后的状态,new Thread() 之后进入
NEW,
// 就绪状态,线程正在运行或等待 CPU 时间片,调用了 线程的 start() 方法进入
RUNNABLE,
// 阻塞状态,synchronized 代码块或方法
BLOCKED,
/**
* 无限期等待状态,如果不手动唤醒就一直持续该状态
* 当调用了不带时间的 Object.wait() 进入该状态(退出状态:Object.notify() / Object.notifyAll())
* 当调用了不带时间的 Thread.join() 进入该状态(退出状态:加入的线程执行完毕)
* 当调用了 LockSupport.park() 进入该状态(退出状态:给线程颁发令牌,LockSupport.unpark(thread))
*/
WAITING,
/**
* 期限等待,达到条件后会自动唤醒,无需手动唤醒
* 当调用了 Thread.sleep() 进入该状态(不管带不带时间都是期限等待,虽然不带时间会一直等,这样有点像无限期等待,但是确实进入了期限等待)
* 当调用了带时间的 Object.wait() 进入该状态(退出状态:时间结束 / Object.notify() / Object.notifyAll())
* 当调用了带时间的 Thread.join() 进入该状态(退出状态:时间结束 / 加入的线程执行完毕)
* 当调用了 LockSupport.parkNanos() 进入该状态(退出状态:时间结束)
* 当调用了 LockSupport.parkUntil() 进入该状态(退出状态:到指定时刻)
*/
TIMED_WAITING,
// 运行结束
TERMINATED;
}
标签:状态,调用,java,Thread,Object,线程,进入
From: https://www.cnblogs.com/hangychn/p/17178292.html