线程的基本状态

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处理完毕后,线程就会进入就绪状态。

posted @ 2022-12-19 02:07  Amireux-126  阅读(154)  评论(0)    收藏  举报