Thread.yield() 方法的作用

Thread.yield() 方法,使当前线程由执行状态,变成为就绪状态,让出cpu时间,在下一个线程执行时候,此线程有可能被执行,也有可能没有被执行。

``
package com.yield;

public class YieldTest extends Thread {

public YieldTest(String name) {
    super(name);
}

@Override
public void run() {
    for (int i = 1; i <= 50; i++) {
        System.out.println("" + this.getName() + "-----" + i);
        // 当i为30时,该线程就会把CPU时间让掉,让其他或者自己的线程执行(也就是谁先抢到谁执行)
        if (i == 30) {
            this.yield();
        }
    }
}

public static void main(String[] args) {
    YieldTest yt1 = new YieldTest("张三");
    YieldTest yt2 = new YieldTest("李四");
    yt1.start();
    yt2.start();
}

}

``
运行结果:

第一种情况:李四(线程)当执行到30时会CPU时间让掉,这时张三(线程)抢到CPU时间并执行。


 
image.png

第二种情况:李四(线程)当执行到30时会CPU时间让掉,这时李四(线程)抢到CPU时间并执行。


 
image.png


作者:G先生_海林
链接:https://www.jianshu.com/p/dd204c853b43
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
posted @ 2021-01-07 14:26  路要一步一步走  阅读(351)  评论(0编辑  收藏  举报