我有一個Runnable類A的內部函數工作:無法獲得notifyAll的像預期的那樣
public void function1(){
synchronized(lock){
function2.decrease();
lock.notifyAll();
System.out.print(function2.getValue());
}
我有一個Runnable B級內的另一個功能:
public void function3(){
try{
synchronized(lock){
while(!(function2.getValue() != 0)){
lock.wait();
}
Thread.sleep(1000);
System.out.println(function2.getValue() + 10);
}
}catch(InterruptedException e){
System.err.println(e);
}
}
當我運行該程序時,即使等待條件計算結果爲true,它也會在打印到函數3之前始終打印在函數1中。
在打印函數1中的值之前,我需要做什麼來打印函數3中的值?
無論如何,由於虛假的喚醒,你不需要while循環嗎? –
你是對的。當我寫我的答案時,我並沒有想到。你還需要一個while循環來封裝基於其他條件的function1 wait(),可能是由函數3設置的布爾值... – HunterCM