例如現(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é)果組合在一起時的功能就可以這樣使用。