Java 中的线程有几种状态?

时间:2019-01-17
本文章向大家介绍Java 中的线程有几种状态?,主要包括Java 中的线程有几种状态?使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

线程从创建、运行到结束总是处于下面五个状态之一:新建状态、就绪状态、运行状态、阻塞状态及死亡状态。


1、新建状态(New):当 new 出一个线程对象来时,线程就进入了新建状态。

2、就绪状态(Runnable):当线程对象调用start()方法即启动了线程,start()方法创建线程运行的系统资源,并调度线程运行run()方法。当start()方法返回后,线程就处于就绪状态。

3、运行状态(Running):当就绪状态的线程获取到了CPU,就会进入运行状态,执行程序代码。

4、阻塞状态(Blocked): 阻塞状态是正在运行的线程没有运行结束,暂时让出CPU,这时其他处于就绪状态的线程就可以获得CPU时间,进入运行状态。处于阻塞状态的线程可以重新回到就绪状态,再进入运行状态,阻塞的情况大致分为三种:

  1. 等待阻塞:运行的线程执行 wait() 方法,JVM 会把线程放入等待池。
  2. 同步阻塞:运行中的线程在获取对象同步锁时,若该同步锁被别的线程占用,则 JVM 会把该线程放入锁池中。
  3. 其它阻塞:运行中的线程执行 sleep() 或者 join() 方法,或者发出 I/O 请求时,JVM 会把线程设置为阻塞状态。

5、死亡状态(Dead):线程任务执行完毕或者因为异常退出了 run() 方法,该线程就结束生命周期。