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


