1、 新建(new):新创建了一个线程对象。
2、 就绪(可运行状态)(runnable):线程对象创建后,当调用线程对象的start()方法,该 线程处于就绪状态,等待被线程调度选中,获取cpu的使用权。
3、 运行(running):可运行状态(runnable)的线程获得了 cpu时间片(timeslice),执行程 序代码。注:就绪状态是进入到运行状态的唯一入口,也就是说,线程要想进入运行状态执行, 首先必须处于就绪状态中;
4、 阻塞(block):处于运行状态中的线程由于某种原因,暂时放弃对CPU的使用权,停止执 行,此时进入阻塞状态,直到其进入到就绪状态,才有机会再次被CPU调用以进入到运行状 态。
阻塞的情况分三种:
1、 等待阻塞:
运行状态中的线程执行wait()方法,JVM会把该线程放入等待队列(waitting queue)中,使 本线程进入到等待阻塞状态;
2,同步阻塞:
线程在获取synchronized同步锁失败(因为锁被其它线程所占用),则JVM会把该线程放入 锁池(lock pool)中,线程会进入同步阻塞状态;
3,其他阻塞:
通过调用线程的sleep()或join()或发出了 I/O请求时,线程会进入到阻塞状态。当sleep() 状态超时、join()等待线程终止或者超时、或者I/O处理完毕时,线程重新转入就绪状态。
4、 死亡(dead)(结束):
线程run()、main()方法执行结束,或者因异常退出了 run()方法,则该线程结束生命周期。 死亡的线程不可再次复生。

Was this helpful?

0 / 0

发表回复 0

Your email address will not be published.