线程礼让 yield()
- 礼让线程就是让当前正在执行的线程暂停,但不阻塞
- 将线程从运行状态转为就绪状态,让CPU重新调度,礼让线程不一定成功,要看CPU的心情
- 礼让线程不一定成功,只是该线程执行的权重变大,成不成功要看CPU的心情
测试礼让线程
package com.kuang.thread;
/**
* @ClassName TestYield
* @Description 礼让线程
* @Author 麻虾
* @Date 2021/5/2 12:37 37
* @Version 1.0
*/
//测试礼让线程
public class TestYield {
public static void main(String[] args) {
MyYield myYield = new MyYield();
new Thread(myYield,"A").start();
new Thread(myYield,"B").start();
}
}
class MyYield implements Runnable {
@Override
public void run(){
System.out.println(Thread.currentThread().getName() + "线程开始执行");
Thread.yield();//礼让
System.out.println(Thread.currentThread().getName() + "线程停止执行");
}
}
运行结果
- 这种情况说明礼让没成功
A线程开始执行
A线程停止执行
B线程开始执行
B线程停止执行
Process finished with exit code 0
- 下面这两种情况说明礼让成功了,A线程暂停了,运行了B线程
A线程开始执行
B线程开始执行
B线程停止执行
A线程停止执行
Process finished with exit code 0
A线程开始执行
B线程开始执行
A线程停止执行
B线程停止执行
Process finished with exit code 0