美文网首页
线程有哪几种状态,是如何流转的?

线程有哪几种状态,是如何流转的?

作者: 糯米团子123 | 来源:发表于2022-11-10 16:41 被阅读0次
    image.png
    1. new(新建)
      线程刚被创建,还未启动。
    2. runnable(就绪)
      线程调用了start()方法,此时线程已启动但未被运行,等待获取cpu资源。
    3. running(运行)
      线程获取到cpu资源,执行代码程序
    4. blocked(阻塞)
      线程由于某种原因放弃cpu资源,暂停运行。直到线程重新进入就绪状态才重新竞争CPU资源,转到运行状态。
      阻塞分为三种情况:
      4.1 等待阻塞:线程执行wait()方法,释放占用的所有资源,JVM将线程放入“等待池”等待notify()或者notifyAll()唤醒,竞争资源。
      4.2 同步阻塞:running状态的线程获取对象同步锁时候,该同步锁被被其他线程占用,JVM会把该线程放入“锁池”中,
      4.3 其他阻塞:running状态的线程执行sleep()或者join()方法,或者发出I/O请求时,JVM把该线程置为阻塞状态,当sleep()超时,join()终止或者超时,I/O处理完毕,线程重新转为就绪状态。
    5. dead(死亡)
      线程执行结束,或者因异常退出run()方法,该线程生命周期结束。

    相关文章

      网友评论

          本文标题:线程有哪几种状态,是如何流转的?

          本文链接:https://www.haomeiwen.com/subject/quhatdtx.html