关于yield()方法详解

一.Thread.yield()方法的作用

作用:提出释放CPU时间片的请求。不会释放锁,线程依然处于RUNNABLE状态。

1.yield()方法详解

①.yield()方法只是提出申请释放CPU资源,至于能否成功释放由JVM决定。

由于这个特性,一般编程中用不到此方法,但在很多并发工具包中,yield()方法被使用,如AQSConcurrentHashMapFutureTask等。

②.调用了yield()方法后,线程依然处于RUNNABLE状态,线程不会进入堵塞状态。

什么是堵塞状态

线程状态处于BLOCKED或WAITING或TIME_WAITING这三种统称为堵塞状态

关于线程状态,详见文章《Java线程状态完全解析教程》,我在这篇文章里有详细解析和代码示例,这里不在赘述。

③.调用了yield()方法后,线程处于RUNNABLE状态时,线程就保留了随时被调度的权利。

二.yield()方法和sleep()方法有什么区别

yield()方法调用后线程处于RUNNABLE状态,而sleep()方法调用后线程处于TIME_WAITING状态,所以yield()方法调用后线程只是暂时的将调度权让给别人,但立刻可以回到竞争线程锁的状态;而sleep()方法调用后线程处于阻塞状态。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值