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状态。

 

你可能感兴趣的:(java,操作系统)