前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java并发技术总结之三——线程状态

Java并发技术总结之三——线程状态

作者头像
剑影啸清寒
发布2020-07-15 15:54:36
2700
发布2020-07-15 15:54:36
举报
文章被收录于专栏:琦小虾的Binary琦小虾的Binary

接上篇《Java并发技术总结之二——ThreadLocal》

三. 线程状态

线程有六种状态:NEW, RUNNABLE(RUNNING), WAITING, TIME_WAITING, BLOCKED, TERMINATED

线程六种状态
线程六种状态

3.1 NEW

线程刚刚被创建的时候,即 new Thread(),且尚未执行 start() 方法的状态;

3.2 RUNNABLE / RUNNING

RUNNABLE(或称 READY) 与 RUNNING 是线程已经准备执行正在执行的状态,是线程执行了 start() 方法之后状态。线程处于 RUNNABLE 或者是 RUNNING 状态,取决于 CPU 的调度,获取了 CPU 使用权的线程处于 RUNNING 状态,否则处于就绪状态 (RUNNABLE)。进入该状态的方法如下:

  • RUNNABLE -> RUNNING: CPU 调度后,获取 CPU 的使用权;
  • RUNNING -> RUNNABLE: 失去 CPU 的使用权,回到就绪状态;
  • NEW -> RUNNABLE: thread.start() 方法调用;
  • WAITING -> RUNNABLE: notify/notifyAll 方法调用;
  • TIME_WAITING -> RUNNABLE: notify/notifyAll 方法调用;

3.3 WAITING

WAITING 为等待状态,需要进行某些特定动作之后才能回到正常的运行状态,时间不确定 。进入该状态的方法如下:

  • RUNNABLE -> WAITING: wait/join 方法调用;

3.4 TIME_WAITING

TIME_WAITING 同样为等待状态,也需要进行某些特定动作才能回到正常运行状态。与 WAITING 方法不同的是 TIME_WAITING 状态的时间是确定的。进入该状态的方法如下:

  • RUNNABLE -> TIME_WAITING: sleep 方法调用;

3.5 BLOCKED

BLOCKED 状态是在获取锁过程中被阻塞的状态,通常用于 synchronized, lock 的使用场景中。进入该状态的方法如下:

  • RUNNABLE -> BLOCKED: synchronized, lock 阻塞;

3.6 TERMINATED

TERMINATED 状态标志着一个线程的结束,处于 TERMINATED 状态的线程不能再转变为其他状态。进入该状态的方法如下:

  • 线程正常的运行完毕;
  • 线程运行抛出异常;
  • JVM Crash,所有线程全部结束;
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-07-13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 三. 线程状态
    • 3.1 NEW
      • 3.2 RUNNABLE / RUNNING
        • 3.3 WAITING
          • 3.4 TIME_WAITING
            • 3.5 BLOCKED
              • 3.6 TERMINATED
              相关产品与服务
              NAT 网关
              NAT 网关(NAT Gateway)提供 IP 地址转换服务,为腾讯云内资源提供高性能的 Internet 访问服务。通过 NAT 网关,在腾讯云上的资源可以更安全的访问 Internet,保护私有网络信息不直接暴露公网;您也可以通过 NAT 网关实现海量的公网访问,最大支持1000万以上的并发连接数;NAT 网关还支持 IP 级流量管控,可实时查看流量数据,帮助您快速定位异常流量,排查网络故障。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档