多线程part5-线程的生命周期
1.创建线程对象(新建状态)
↓↓↓start()方法↓↓↓
2.有执行资格没有执行权(就绪状态,不停抢cpu),有资格抢cpu,但目前没有抢到
↓↓↓抢到执行权↓↓↓
↑↑↑被其他线程抢到执行权↑↑↑
3.有执行资格有执行权(运行状态) ————sleep()或者其他堵塞方法————》没有执行资格没有执行权(阻塞状态)——时间到或者堵塞结束——》2.(就绪状态)
↓↓↓run()执行完毕↓↓↓
4.线程死亡(死亡状态)
线程睡眠时间到了,不会立马执行下面的代码,还要进行抢夺
查看API帮助文档
可以看到线程的六个状态
新建-就绪-阻塞-无限等待-计时等待-死亡
为什么没有运行状态?
因为当线程抢到cpu执行权时,java虚拟机将线程交给了操作系统去管理,因为不是虚拟机管理,所以没有定义这个状态
以上是Java源代码的六种状态
而操作系统层面,可以看成有五种状态
新建
分到CPU时间:运行
可以分到CPU时间:就绪
分不到CPU时间:阻塞
终结