yield函数概念:

当调用Thread.yield() 函数时,会给线程调度器一个当前线程愿意让出CPU使用的暗示,但是线程调度器可能会忽略这个暗示。

public class YieldDemo {

    public static void main(String[] args) {
        Runnable yieldTask = new Runnable() {
            @Override
            public void run() {
                for(int i = 1; i <= 10; i++){
                    System.out.println(Thread.currentThread().getName()  + i) ;
                    if(i == 5){
                        Thread.yield();
                    }
                }
            }
        };

        Thread t1= new Thread(yieldTask,"A");
        Thread t2 = new Thread(yieldTask,"B");
        t1.start();
        t2.start();
    }
}

  打印结果:

A1
A2
A3
A4
A5
A6
A7
A8
A9
B1
A10
B2
B3
B4
B5
B6
B7
B8
B9
B10

  可以发现A5后面是A6,并没有让出CPU

 

再执行一次

A1
B1
A2
A3
A4
A5
B2
A6
A7
A8
A9
A10
B3
B4
B5
B6
B7
B8
B9
B10

  可以发现A5后面是B2,交出了CPU执行

相关文章:

  • 2022-12-23
  • 2021-12-28
  • 2022-02-16
  • 2022-12-23
  • 2022-12-23
  • 2022-01-10
  • 2022-12-23
  • 2021-08-25
猜你喜欢
  • 2021-07-14
  • 2021-07-28
  • 2022-12-23
  • 2021-12-09
  • 2021-11-26
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案