美文网首页
浅谈Thread.yield()方法

浅谈Thread.yield()方法

作者: 叫我胖虎大人 | 来源:发表于2019-08-13 15:55 被阅读0次

概念

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

注意:

  • 只是示意愿意让出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

相关文章

网友评论

      本文标题:浅谈Thread.yield()方法

      本文链接:https://www.haomeiwen.com/subject/imkbjctx.html