Thread.yield( )方法:
使当前线程从执行状态(运行状态)变为可执行态(就绪状态)。cpu会从众多的可执行态里选择。这时候,“当前” 也就是刚刚的那个线程还是有可能会被再次执行到的。
public class YieldTest extends Thread {
public YieldTest(String name) {
super(name);
}
@SuppressWarnings("static-access")
@Override
public void run() {
for (int i = 1; i <= 5; i++) {
System.out.println("" + this.getName() + "-----" + i);
// 当i为3时,该线程就会把CPU时间让掉,让其他或者自己的线程执行(也就是谁先抢到谁执行)
if (i == 3) {
System.out.println(Thread.currentThread().getName() + "让出cpu");
this.yield();
}
}
}
public static void main(String[] args) {
YieldTest yt1 = new YieldTest("张三");
YieldTest yt2 = new YieldTest("李四");
yt1.start();
yt2.start();
}
}
执行结果可能1:
张三-----1
张三-----2
张三-----3
张三让出cpu
李四-----1
李四-----2
李四-----3
李四让出cpu
张三-----4
张三-----5
李四-----4
李四-----5
执行结果可能2(“当前” 也就是刚刚的那个线程还是有可能会被再次执行到的。):
张三-----1
李四-----1
李四-----2
李四-----3
李四让出cpu
张三-----2
张三-----3
张三让出cpu
李四-----4
李四-----5
张三-----4
张三-----5
执行结果可能3:
张三-----1
李四-----1
张三-----2
李四-----2
张三-----3
李四-----3
张三让出cpu
李四让出cpu
张三-----4
张三-----5
李四-----4
李四-----5