让线程放弃执行权-yield

例如现在有两个线程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);
    }
}

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容