Java线程状态

从JDK1.5开始,Thread类里加了线程状态的枚举:State。

其共有6项:NEW,RUNNABLE,BLOCKED,WAITING,TIMED_WAITING,TERMINATED。

NEW:线程创建到start方法被调用前,状态为NEW;

RUNNABLE:对JVM而言是正在执行,但可能正在等待操作系统的CPU时间片;

BLOCKED:等待monitor lock,即等待进入synchronized同步块或方法;

WAITING:当调用了Object.wait(),Thread.join(),LockSupport.park()后,进入等待状态;wait要等其他线程调用Object.notify或notifyAll,join要等指定的线程状态为TERMINATED;

TIMED_WAITING:类似WAITING,只是加了超时时间;Thread.sleep时,也是进入该状态;

TERMINATED:线程完成了所有的事情,最终的状态;

一个线程,都会经历 NEW,RUNNABLE,TERMINATED这3个状态。

当代码中有 synchronized时,有可能会出现BLOCKED状态。

有调用wait,join,park等方法时,会出现WAITING状态或TEMED_WAITING状态。

猜你喜欢

转载自lippeng.iteye.com/blog/2412809