让线程放弃执行权-yield

2023-02-18  本文已影响0人  NewNiu

例如现在有两个线程T1&T2
T1的作用是一个给value赋值的功能。
T2的作用是一当T1value被赋值完成后打印value值的功能。

T1
public class ValueTask implements Runnable {
  public static int value = 0;
  @override
  public void run() {
    try {
      Thread.sleep(10000);
    }catch(Exception e) {
      e.printStackTrace();
    }
    // 设置value的值
    value = 100;
  }
}

T2
public class PrintTask implements Runnable {
    @Override
    public void run() {
        while(ValueTask.value == 0) {
             Thread.yeild();// 放弃当前线程的执行权,等ValueTask.value不等于0以后执行后面的动作。
        }
        System.out.println(ValueTask.value);
    }
}

现实当中,有许多场景会用到类似的功能。例如在执行多线程并发任务后,其中一条任务需要等待另外两个任务执行完成后的结果再将结果组合在一起时的功能就可以这样使用。

上一篇 下一篇

猜你喜欢

热点阅读