yield的概念及使用姿势

概念:

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

代码演示:

public class YieldDemo implements Runnable{

    @Override
    public void run() {
        for (int i = 0; i < 10; i++) {
            System.out.println(Thread.currentThread().getName() + i);
            if (i == 5) {
                Thread.yield();
            }
        }
    }

    public static void main(String[] args){
        final Thread t1 = new Thread(new YieldDemo(),"A");
        final Thread t2 = new Thread(new YieldDemo(),"B");
        t1.start();
        t2.start();

    }
}

分别有以下两种情况输出:

第一种情况:

A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,B0,B1,B2,B3,B4,B5,B6,B7,B8,B9,

第二种情况:

A0,A1,A2,A3,A4,A5,B0,B1,B2,B3,B4,B5,B6,B7,B8,B9,A6,A7,A8,A9,
原文地址:https://www.cnblogs.com/hujinshui/p/10451428.html