Java线程的6种状态及切换

5 篇文章 0 订阅

Java线程状态

在这里插入图片描述

常见的线程状态有六种:

new一个线程时,还没有调用start()该线程处于新建状态

线程对象调用start()方法时候,他会被线程调度器来执行,也就是交给操作系统来执行了,那么操作系统来运行的时候,这整个状态叫Runnable,Runnable内部有两个状态 (1)Ready就绪状态/(2)Running运行状态。就绪状态是说扔到CPU的等待队列里面去排队等待CPU运行,等真正扔到CPU上去运行的时候才叫Runnable运行状态。(调用yiled时候会从Running状态跑到Ready状态去,线程配调度器选中执行的时候又从Ready状态跑到Running状态去)

如果线程顺利执行完了就会进 (3)Teminated结束状态。(需要注意Teminated完了之后还可不可以回到new状态再调用start?这是不行的,这就是结束了)

在Runnable这个状态里头还有其他一些状态的变迁 (4)TimedWaiting等待(5)Waiting等待(6)Blocked阻塞,在同步代码块的情况下就没得到锁就会阻塞状态,获得锁的时候是就绪状态运行。在运行的时候如果调用了o.wait()、t.join()、LockSupport.park()进入Waiting状态,调用o.notify()、o.notifyAll()、LockSupport.unpark()就又回到Running状态。TimedWaiting按照时间等待,等待时间结束自己就回去了,Thread.sleep(time)、o.wait(time)、t.join(time)、LockSupport.parkNanos()、LockSupport.parkUntill()这些都是关于时间等待的方法。

内容来自马士兵多线程与高并发的书

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值