Java基础-线程-yeild

2020-04-03  本文已影响0人  16325

yeild操作不涉及锁的释放,只是线程状态的变化,执行中->就绪。给其他的线程一个执行的机会

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时间并执行。

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

上一篇 下一篇

猜你喜欢

热点阅读