Thread类内部有个public的枚举Thread.State,里边将线程的状态分为:
New (新生)
NEW(新建尚未运行/启动)
Runnable (可运行)
处于可运行状态:正在运行或准备运行
在线程对象上调用start方法后,相应线程便会进入Runnable状态,若被线程调度程序调度, 这个线程便会成为当前运行(Running)的线程;
Blocked (被阻塞)
阻塞状态,受阻塞并等待某个监视器锁的线程,处于这种状态。
若一段代码被线程A “上锁”,此时线程B尝试执行这段代码,线程B就会进入Blocked状 态;
Waiting (等待)
通过wait方法进入的等待
当线程等待另一个线程通知线程调度器一个条件时,它本身就会进入Waiting状态;
Time Waiting (计时等待)
通过sleep或wait timeout方法进入的限期等待的状态
计时等待与等待的区别是,线程只等待一定的时间,若超时则不再等待;
Terminated (被终止)
线程终止状态
线程的run方法执行完毕或者由于一个未捕获的异常导致run方法意外终止会进入 Terminated 状态。
Was this helpful?
0 / 0