线程的基本状态
1、初始状态(New)。
线程对象被创建,即为初始状态。只在堆中开辟内存,与常规对象无异。
2、就绪状态(Ready)。
调用start()方法后,线程就进去了就绪状态。等待操作系统选择,并分配时间片。
3、运行状态(Running)。
获得时间片之后,进入运行状态,如果时间片到期,则返回就绪状态,继续等待。
4、终止状态(Terminated)。
主线程main()或者独立线程run()结束,进入终止状态,并释放持有的时间片。
5、线程等待(Waiting)。
TIMED_WAITING(时间等待):使用sleep方法时,触发的等待是有时间限制的,称为期限等待。
WAITING:使用join方法时,需要等当前线程执行完毕或者中断,这个时间是无法确定的,称为无限期等待。
6、线程阻塞(Blocked)。
处理运行状态的线程,因为某种原因放弃了CPU的使用权,而停止运行。
此时线程进入阻塞状态,知道其进入就绪状态,并重新获取到CPU的使用权才会重新进入运行状态。
阻塞状态可分为三种:
等待阻塞:运行中的方法使用wait()方法,进入阻塞状态。
同步阻塞:线程获取synchronized锁失败,此时锁被其他线程占有,就进入了阻塞状态。
其他阻塞:调用线程的sleep()方法或join()方法获取进行I/O操作时,线程会进入阻塞状态。当sleep超时、join等待线程终止或超时、I/O处理完毕后,线程就会进入就绪状态。

浙公网安备 33010602011771号