当前位置: 时代头条 > 正文

Java线程状态转换

线程从新建到结束一般有5个状态,为新建、可运行、运行、阻塞、结束,其中阻塞不是必经状态!从网上找了张图,很详细的画出了线程的状态关系:

Java线程状态转换

下面详细说下:

1、新建状态:就是新建了一个线程对象;

2、可运行状态:就是调用start()方法后,线程将进入一个线程池,等待系统分配资源,(注意不是说条用start()方法后,线程就被执行的,他得等待获得资源)

3、运行状态:就是系统给分配了资源(有的教材认为资源就是CPU的使用权),程序开始执行;

4、阻塞状态:由于某种原因,程序执行到某种程度时,放弃了资源的使用权,暂时停止运行。满足相应条件后,又变成可运行状态,这个由分为几种情况:

1)、等待阻塞:运行的线程执行了wait()方法;

2)、同步阻塞:运行的线程在获取对象的同步锁时,若该同步锁被别的线程占用;

3)、其他阻塞:运行的线程执行sleep()或join()方法,或者发出了I/O请求时,JVM会把该线程置为阻塞状态。

5、结束:也叫死亡状态,就是程序执行完成了,或发生异常退出run()方法了。

最新文章

取消
扫码支持 支付码