线程的生命周期

Posted jiatcode

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线程的生命周期相关的知识,希望对你有一定的参考价值。

线程的生命周期

技术图片

1.新建

  • 线程刚被创建时就处于新建状态,JVM为其分配内存,初始化成员变量

2.就绪

  • 当线程调用了start()方法时,就处于就绪状态
  • JVM为线程创建了方法栈程序计数器,等待线程调度器调度

3.运行

  • 就绪状态的线程获取CPU资源,开始运行run()方法, 该线程进入运行状态

4.阻塞

  • 线程调用了sleep()方法,主动放弃处理器资源
  • 线程调用了一个阻塞式的IO方法,在该方法返回之前一直处于阻塞状态(例如上述的FutureTask.get())
  • 线程试图过去一个同步锁(同步监视器),该锁被其他线程占用时,该线程处于阻塞状态
  • 线程在等待某个通知(notify) -- 线程通讯
  • 程序调用了线程的suspend()方法将程序挂起,但是这个方法容易导致死锁,所以应该尽量避免

5.死亡

  • call()方法或者run()方法正常结束
  • 线程抛出一个未捕获的Exception或者Error
  • 调用该线程的stop()方法来结束线程,但是容易出现线程死亡而锁还没有释放的情况,其他等待该锁的线程就会一直处于阻塞状态,形成死锁,所以不推荐使用

以上是关于线程的生命周期的主要内容,如果未能解决你的问题,请参考以下文章

Java线程的生命周期

高并发线程的生命周期其实没有我们想象的那么简单!!

第八十二课线程的生命周期

Java中线程的生命周期

小伙伴们,线程生命周期线程池生命周期别再傻傻分不清楚了!!!

线程生命周期