- 新建:新创建一个对象
- 可运行:线程对象创建后,其他线程(比如main线程)调用该对线打个stat()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取cpu的权限
- 运行:可运行状态的线程获取到CPU的时间片,执行程序代码
- 阻塞:阻塞状态是线程因为某种原因放弃的cpu的使用权,也让出了CPU timeslice,暂停停止运行,直至线程进入可运行的(Runable)状态,才有机会再次获得时间片,转到运行状态 阻塞又分为三种
(1. 等待阻塞:运行的线程执行o.wait()方法,JVM会把该线程放啊在等待队列中
(2.同步阻塞:运行线程在回去对象的同步锁时,该同步锁被其他线程占用,则JVM会把该线程放入锁池(lock pool)中
(3.其他阻塞:运行的线程执行Thread.sleep(long ms)或者o.join() 方法,或者发出I/O请求时,JVM把该线程设置为阻塞状态,当sleep()超时或者Join()等待线程终止或者超时,或者I/O处理完毕,线程重新转入可运行状态
5.死亡:线程Run(),main()方法之行结束,或者因为异常推出了Run()方法则该线程的生命周期结束。死亡线程不可复生