Java线程在其生命周期中可能会有以下几种状态:
1、新建(New)
当创建一个Thread类的实例时,线程就进入了新建状态,此时,线程还没有开始执行,它仅仅是一个空的线程对象。
Thread thread = new Thread();
2、就绪(Runnable)
当调用线程的start()方法后,线程就进入了就绪状态,此时,线程已经具备了运行的条件,等待系统分配CPU时间片,以便执行线程的run()方法。
thread.start();
3、运行(Running)
当线程获得CPU时间片后,就开始执行run()方法,此时线程处于运行状态,在运行状态的线程可以被抢占,也可以主动放弃CPU时间片,让其他线程执行。
4、阻塞(Blocked)
线程在运行过程中,可能会因为某些原因进入阻塞状态,常见的阻塞原因有:等待I/O操作完成、等待获取锁资源、等待其他线程唤醒等,当阻塞条件解除后,线程会重新进入就绪状态。
5、等待(Waiting)
线程在运行过程中,可能会进入等待状态,等待状态的线程需要等待其他线程执行特定操作(如通知或中断)后才能继续执行,常见的等待方法有:Object.wait()、Thread.join()、LockSupport.park()等。
6、计时等待(Timed Waiting)
线程在运行过程中,可能会进入计时等待状态,计时等待状态的线程需要等待指定的时间后才能继续执行,常见的计时等待方法有:Thread.sleep()、Object.wait(long timeout)、Thread.join(long millis)等。
7、终止(Terminated)
线程执行完run()方法后,或者因为异常而终止,线程就进入了终止状态,此时线程的生命周期结束,不再具备运行条件。
状态 | 描述 |
新建 | 线程对象已创建,但尚未启动 |
就绪 | 线程已具备运行条件,等待系统分配CPU时间片 |
运行 | 线程正在执行run()方法 |
阻塞 | 线程因等待I/O操作、获取锁资源等原因暂时停止运行 |
等待 | 线程需要等待其他线程执行特定操作后才能继续执行 |
计时等待 | 线程需要等待指定时间后才能继续执行 |
终止 | 线程执行完毕或因异常而终止 |
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/656054.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复