线程状态
- 新生状态
- 就绪状态
- 运行状态
- 死亡状态
- 阻塞状态
新生状态
线程对象一旦创建,就进入到新生状态。
就绪状态
当调用start()方法,线程立即进入就绪状态,但是不意味着立即高度执行。
运行状态
进入运行状态,线程才真正执行线程的代码块。
阻塞状态
当调用sleep()、wait()或同步锁定时,线程进入阻塞状态,所谓就是代码不往下执行,在等待着,同理不保证调用以上方法就立即阻塞。阻塞事件解除后,重新进入就绪状态,等待CPU调度才进入运行状态。
阻塞的原因
- sleep(),不会释放锁,带着资源。
- wait(),不带资源
- yield(),礼让线程,从运行状态转入就绪状态,而不是阻塞状态。
- join(),插队,合并线程,待出线程执行完成,再执行其他线程,其他线程阻塞。
- read(),write()
死亡状态
控制线程进入死亡状态,也就是想方设法使线程体的代码执行完毕或中断执行即可。一旦进入死亡状态,不能再调用start()再次启动线程。