参考下列代码,分别在有yield和没有yield下执行代码即可看出区别
1. 不使⽤ yield 的时候, 张三李四⼤概五五开
2. 使⽤ yield 时, 张三的数量远远少于李四
结论: yield 不改变线程的状态, 但是会重新去排队,⽽排队之后选择谁是不确定的。
/**
* yield 方法演示(让出cpu执行权)
*/
public class ThreadYield {
public static void main(String[] args) {
Thread t1 = new Thread(()->{
//得到当前线程
Thread cThread = Thread.currentThread();
for (int i = 0; i < 100; i++) {
//让出CPU执行权
Thread.yield();
System.out.println("执行线程:" + cThread.getName());
}
},"张三");
t1.start();
new Thread(()->{
Thread cThread = Thread.currentThread();
for (int i = 0; i < 100; i++) {
System.out.println("执行线程:" + cThread.getName());
}
},"李四").start();
}
}