Java 多线程(PART VI) 线程状态图解

23 篇文章 0 订阅
23 篇文章 1 订阅
图解

这是网上出现频率最高的一张图:
我用AI重新画了一遍(adobe illustrator 软件不错,但是我不太会用)。
这里写图片描述

主要有那么5种状态:

新建状态:

此时线程对象已经被创建,但是还是没有调用start()方法,如果调用run()方法线程不会启动。

可执行状态:

注:这是唯一可以进入running状态的状态,也叫就绪状态。
此时已经调用方法start(),JVM会为起创建方法调用栈和程序计数器,此时它随时都可以被CPU调度。

运行状态:

此时线程获得CPU资源,正在运行。如果此时调用yield方法会主动放弃CPU退回到可执行状态。

阻塞状态:

如果CPU由于某种突发原因放弃了CPU的使用权。此时会进入阻塞状态。此时调度器忽略次线程,直到其返回就绪状态。才有可能再次被调用。

等待阻塞

调用线程的wait()方法,让线程等待某工作的完成。

同步阻塞

线程在获取synchronized同步锁失败,因为其他的线程已经获得了这个锁,它会进入同步阻塞状态。

其他阻塞

调用sleep()方法或join()或者等待I/O操作,线程会进入到阻塞状态。如果此时sleep时间到了,或者join等待的线程已经完成操作,或者I/O完成,就好再次进入到就绪状态。

死亡状态

此时线程任务已经完成,或者是不可再运行。处于死亡状态的线程是不可再调度的,不可再得到CPU时间。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值