浅谈Thread.yield()方法

2019-08-13  本文已影响0人  叫我胖虎大人

概念

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

注意:


代码示例

public class YieldDemo {

    public static void main(String[] args) {

        Runnable yieldTask = () -> {
            for (int i = 0; i <= 10; i++) {
                System.out.println(Thread.currentThread().getName() + " " + i);
                if (i == 5){
                    Thread.yield();
                }
            }
        };

        Thread thread1 = new Thread(yieldTask,"A");
        Thread thread2 = new Thread(yieldTask,"B");
        thread1.start();
        thread2.start();
    }
}

运行结果,结果不一,结合实际验证

A 0
B 0
A 1
A 2
A 3
A 4
A 5
B 1
A 6
B 2
B 3
B 4
B 5
A 7
A 8
A 9
A 10
B 6
B 7
B 8
B 9
B 10

上一篇 下一篇

猜你喜欢

热点阅读