线程的生命周期:
1、新生状态:
- 当创建好当前线程对象之后,没有启动之前(调用 start 方法之前)
- ThreadDemo thread = new ThreadDemo();
- RunnableDemo run = new RunnableDemo();
2、就绪状态:
- 准备开始执行,并没有执行,表示调用 start 方法之后
- 当对应的线程创建完成,且调用 start 方法之后,所有的线程会添加到一个就绪队列中,所有的线程同时去抢占 cpu 的资源
3、运行状态:
- 当当前进程获取到 cpu 资源之后,就绪队列中的所有线程回去抢占 cpu 的资源,谁先抢占到谁先执行,在执行的过程中就叫做运行状态
- 抢占到 cpu 资源,执行代码逻辑开始
4、死亡状态:
- 当运行中的线程正常执行完所有的代码逻辑或者因为异常情况导致程序结束叫做死亡状态
- 进入的方式:
- 正常运行完成且结束
- 认为中断执行,比如使用 stop 方法
- 程序抛出未捕获的异常
- 进入的方式:
5、阻塞状态:
- 在程序运行过程中,发生某些异常情况,导致当前线程无法再顺序执行下去,此时会进入阻塞状态,进入阻塞状态的原因消除之后,
- 所有的阻塞队列会再次进入到就绪状态中,随机抢占 cpu 的资源,等待执行
- 进入的方式:
- sleep 方法
- 等待 io 资源
- 进入的方式:
微信中搜索 “码农UP2U” 关注我的公众号吧!!!
网友评论