线程的概念及状态说明
下文笔者将讲述线程的基本概念及线程状态说明,如下所示
线程的概念
在程序运行过程中
能够运行程序代码的一个执行单位
每个程序至少都有一个线程,也就是程序本身
线程的六种状态
new runnable waiting timed waiting blocked terminated
线程各状态的说明
new:
新创建一个线程对象
可运行runnable:
线程对象创建后
其它线程(比如main线程)调用了该对象的start()方法
该状态的线程位于可运行线程池中,等待被线程调度选中,获取cpu的使用权。
阻塞blocked:
阻塞状态是指线程因为某种原因放弃了cpu使用权
让出cpu time slice
暂时停止运行
直到线程进入可运行状态
才有机会再次获得cpu timeslice转到运行状态
阻塞的情况分三种:
1.等待阻塞:
running线程执行wait()方法
JVM会把该线程放入等待队列(waitting queue)中
2.同步阻塞:
running线程在获取对象的同步锁时
若该同步锁被别的线程占用
则JVM会把该线程放入锁池(lock pool)中
3.其它阻塞:
running线程执行Thread.sleep(long ms)或t.join()方法
或者发出了I/O请求时
JVM会把该线程置为阻塞状态
当sleep()状态超时join()等待线程终止或超时、或者I/O处理完毕时,线程重新转入可运行状态。
死亡terminated:
run()、main()方法执行结束
或因异常退出了run()方法
则该线程结束生命周期
死亡的线程不可重生
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


