Thread 生命周期
在使用多线程时,生命周期是非常重要的,下图展示了Thread运行的状态图
New Thread
使用new创建新的Thread对象时,线程状态为 New Thread,此时线程不活动,是Java的内部状态
Runnable
在Thread对象上调用start()时,状态变为Runnable。控件赋予Thread调度程序以完成执行。是否立即运行线程或运行前将其保留在可运行的线程池中,取决于线程调度程序的OS。
Running
线程正在执行时,状态为Running,线程调度程序从可运行的线程池中选择一个线程,并将状态改为Running,CPU执行线程,线程状态可改为Runnable、Dead或Blocked。
运行状态取决于时间切片、完成run()或等待资源。
阻塞、等待
线程可以等待其他线程使用线程连接完成,等待待使用资源。若线程等待状态结束,则变为Runnable,且会被移回可运行的线程池。
DEAD
若线程执行完成,则状态变为Dead,且认为它不存在。