多线程之yield()方法
Posted 爱上口袋的天空
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多线程之yield()方法相关的知识,希望对你有一定的参考价值。
一:简介
- 简介
Thread.yield()方法作用是:暂停当前正在执行的线程对象(及放弃当前拥有的cup资源),
并执行其他线程。yield()做的是让当前运行线程回到可运行状态,以允许具有相同优先级的其
他线程获得运行机会。因此,使用yield()的目的是让相同优先级的线程之间能适当的轮转执行。
但是,实际中无法保证yield()达到让步目的,因为让步的线程还有可能被线程调度程序再次选中。 - 结论:
yield()从未导致线程转到等待/睡眠/阻塞状态。在大多数情况下,yield()将导致线程从运行状
态转到可运行状态,但有可能没有效果。
二:代码示例
- 下面我们比较示例代码运行的时间作为比较结果,用来测试yield方法的使用结果
- 创建继承Thread类的线程类MyThread.java
- 创建测试类
- 效果如下:
可以发现我们在运行MyThread线程的时候CPU是独占时间片的,没有其他线程和它抢CPU,
所以使用的时间是23毫秒。 - 下面我们修改一下MyThread类,添加yield方法 ,将它让给其他任务去占用CPU执行时间
- 效果
可以发现我们将CPU让给其他资源导致速度变慢。
以上是关于多线程之yield()方法的主要内容,如果未能解决你的问题,请参考以下文章
Java--多线程之join,yield,sleep;线程优先级;定时器;守护线程