Java面试篇基础部分-Java线程生命周期
线程的生命周期分别为 新建(New)、就绪(Runnable)、运行(Running)、阻塞(Blocked)和死亡(Dead)这五种状态。
在系统运行过程中有线程不断地被创建,而旧的线程在执行完毕之后被清理,线程通过排队的方式获取共享资源或者锁的时候被阻塞,所以运行中的线程就会在就绪、阻塞、运行状态之间来回切换。线程的状态转化流程如图所示
- 1、调用new方法创建一个新的线程,这个时候线程处于新建状态。
- 2、调用start方法启动一个线程,这个时候线程处于就绪状态。
- 3、处于就绪状态的线程需要等待CPU获取资源来支持运行,等待获取CPU资源之后会进入到running状态。
- 4、在运行状态的线程调用yield方法之后会失去处理器的资源,这个时候就会再次进入到就绪状态。
- 5、正在运行状态的线程执行了sleep方法、I/O、等待同步锁、等待通知、调用了suspend方法之后就会进入到挂起,进入阻塞状态。
- 6、阻塞状态的线程如果sleep时间到了、I/O方法返回了、获取到了同步锁、收到线程通知、或者是调用了resume的方法之后,就会再次进入到就绪状态,这个时候就是等待CPU分配资源。
- 7、处于运行状态的线程,在调用了run方法或者是call方法,并且正常的执行完成、
原文地址:https://blog.csdn.net/nihui123/article/details/142350119
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!