Java中Thread.yield方法,译为让步,使用了这个方法之后,他会把自己的CPU时间让出来,让自己或者其他的线程去运行
注意这里是自己或者其他的线程,不一定是其他的线程抢到CPU的时间,也有可能是自己抢到CPU的时间,所以并不是单纯的让给其他线程。
package Thread_;
public class Thread5 implements Runnable{
public void run(){
for(int i = 0;i < 5;i++){
System.out.println(Thread.currentThread().getName() + "-->" + i + " ");
if(i == 3){
System.out.println("线程礼让");
Thread.currentThread().yield();
}
}
}
public static void main(String[] args) {
Thread5 my = new Thread5();
Thread t = new Thread(my,"A");
Thread t2 = new Thread(my,"B");
t.start();
t2.start();
}
}
下面是一种可能的结果:
A-->0
B-->0
B-->1
B-->2
B-->3
线程礼让
B-->4
A-->1
A-->2
A-->3
线程礼让
A-->4
观察以上的结果,对B在i ==3的时候,B让出线程,但是后面不是A接着运行,而是B线程接着运行
所以yield方法是让自己或者其他线程运行,并不是单纯的让给其他线程。