线程的概念及状态说明
下文笔者将讲述线程的基本概念及线程状态说明,如下所示
线程的概念
在程序运行过程中 能够运行程序代码的一个执行单位 每个程序至少都有一个线程,也就是程序本身
线程的六种状态
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()方法 则该线程结束生命周期 死亡的线程不可重生
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。