讓線程放棄執(zhí)行權(quán)-yield

例如現(xiàn)在有兩個線程T1&T2
T1的作用是一個給value賦值的功能。
T2的作用是一當(dāng)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();
    }
    // 設(shè)置value的值
    value = 100;
  }
}

T2
public class PrintTask implements Runnable {
    @Override
    public void run() {
        while(ValueTask.value == 0) {
             Thread.yeild();// 放棄當(dāng)前線程的執(zhí)行權(quán),等ValueTask.value不等于0以后執(zhí)行后面的動作。
        }
        System.out.println(ValueTask.value);
    }
}

現(xiàn)實當(dāng)中,有許多場景會用到類似的功能。例如在執(zhí)行多線程并發(fā)任務(wù)后,其中一條任務(wù)需要等待另外兩個任務(wù)執(zhí)行完成后的結(jié)果再將結(jié)果組合在一起時的功能就可以這樣使用。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容