Java中的线程礼让(yield方法)

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方法是让自己或者其他线程运行,并不是单纯的让给其他线程。

猜你喜欢

转载自blog.csdn.net/weixin_43938560/article/details/89893485