并发编程学习之Thread.yield()方法

版权声明: https://blog.csdn.net/Dongguabai/article/details/82217966

这个方法是一个静态方法,是“让步”的意思,一旦执行,它会使当前线程让出CPU,即由“运行状态”进入到“就绪状态”,从而让其它具有相同优先级的等待线程获取执行权。但是要注意的是让出CPU并不代表当前线程不执行了。当前线程让出CPU后,还是会进行CPU资源的争夺,但是能不能再次被分配到,就不一定了。因此yeild()方法的调用好像就是在说:我已经完成一些最终要的工作了,应该可以休息一下了,可以给其他线程一些工作机会了!

如果你觉得一个线程不那么重要,或者优先级比较低,但是又不想它占用过多的CPU资源,就可以在适当的时候使用Thread.yield(),给予其他重要线程更多的机会。

https://www.cnblogs.com/java-spring/p/8309931.html中的例子举的很好:

一帮朋友在排队上公交车,轮到Yield的时候,他突然说:我不想先上去了,咱们大家来竞赛上公交车。然后所有人就一块冲向公交车,有可能是其他人先上车了,也有可能是Yield先上车了。但是线程是有优先级的,优先级越高的人,就一定能第一个上车吗?这是不一定的,优先级高的人仅仅只是第一个上车的概率大了一点而已,最终第一个上车的,也有可能是优先级最低的人。并且所谓的优先级执行,是在大量执行次数中才能体现出来的。

猜你喜欢

转载自blog.csdn.net/Dongguabai/article/details/82217966