线程生命周期
线程的生命周期图

线程的状态转换图

(1)新建状态(New):当一个线程实例被创建,但尚未调用start()方法时,线程处于新建状态。在这个状态下,线程对象已经分配了必要的内存,但尚未开始执行。
(2)就绪状态(Runnable):当线程对象调用了start()方法后,线程进入就绪状态。处于就绪状态的线程等待被线程调度选中,获得CPU的使用权,准备执行。
(3)运行状态(Running):当线程获得CPU时间片后,进入运行状态,开始执行run()方法中的代码。线程的实际执行速度和效率取决于处理器的速度以及多核处理器的核数。
(4)阻塞状态(Blocked):当一个线程试图获取一个内部的对象锁而该锁被其他线程持有时,线程进入阻塞状态。阻塞状态的线程在锁被释放时会进入就绪状态。
(5)等待状态(Waiting):线程通过调用其自身的wait()方法、join()方法,或者通过调用其他线程的join()方法,可以进入等待状态。等待状态的线程不会被分配CPU时间片,只能通过被其他线程显式唤醒进入就绪状态。13
超时等待状态(Timed Waiting):这是等待状态的一种,线程会在一个指定的时间范围内等待其他线程执行特定动作。一旦等待时间超过,线程会进入就绪状态。
(6)死亡状态(Terminated):当线程执行完毕或出现异常时,线程进入终止状态。终止状态的线程不会切换到其他任何状态,标志着线程的生命周期结束。

浙公网安备 33010602011771号