JAVA并发编程(七)之yield方法

一、Thread yield的概念 

yield 是 Thread 类中的native方法,作用:让出当前线程CPU的时间片,使当前线程从执行状态变为就绪状态,cpu将会从就绪队列中重新选择一个线程,也就是说,当前线程还是有可能会被再次选择的。

每次运行程序,最终的执行结果都是不相同的,所以使用yield方法是无法控制线的执行顺序

1、设置优先级观察效果

通过设置线程的优先级,我们也无法做到控制线程的执行顺序;优先级高的线程,只是分配到CPU资源的可能性大

二、yield方法与锁

yield虽然放弃了占有的CPU资源,但是他不会释放自己持有的锁

线程1先执行获取锁后虽然调用了yield方法,但是由于锁被他持有,CPU资源即使被线程2获取,但由于线程1没有释放锁,所以线程2只能阻塞,释放CPU资源,直到线程1释放了锁,才能执行

三、yield与sleep方法比较

  1. yield从用法上看与sleep(0)十分相似,都可以让CPU重新分配执行权
  2. 他们都不会释放自己持有的锁
  3. 本质上看sleep方法是让当前线程阻塞,而yield是进入就绪态

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值