线程的状态及其相互转换
- 初始(NEW):新创建了一个线程对象,但还没有调用start()方法。
- 运行(RUNNABLE):处于可运行状态的线程正在JVM中执行,但它可能正在等待来自操作系统的其它资源,例如处理器。
- 阻塞(BLOCKED):线程阻塞于synchronized锁,等待获取synchronized锁的状态。
- 等待(WAITING):Object.wait()、Thread.join()、LockSupport.park(),进入该状态的线程需要等待其它线程做出一些特定动作(通知或中断)。
- 超时等待(TIMED_WAITING):Thread.sleep(long)、Object.wait(long)、Thread.join(long)、LockSupport.parkNanos()、LockSupport.parkUntil(),该状态不同于WAITING,它可以在指定的时间内自行返回。
- 终止(TERMINATED):表示该线程已经执行完毕。