Java執行緒間通訊

2021-09-23 22:00:20 字數 1063 閱讀 5088

對於我們的銀行賬戶,兩個執行緒之間並沒有聯絡,這就會出現餘額不足但是還能取錢的狀況,為了解決這個問題,我們就使用執行緒間通訊來解決

wait()方法:中斷方法的執行,使執行緒等待

notify()方法:喚醒處於等待的某一線程,使其等待結束

notifyall()方法:喚醒處於等待的所有執行緒,使其等待結束

package threadproj;

public class consumer implements runnable

@override

public void run() catch (interruptedexception e)

}}}

package threadproj;

public class producer implements runnable

@override

public void run() catch (interruptedexception e)

} }}

package threadproj;

public class queue

} catch (interruptedexception e)

} system.out.println("消費" + n);

// 消費完畢,容器中沒資料了

flag = false;

notifyall();

return n;

} public void setn(int n)

} catch (interruptedexception e)

} system.out.println("生產" + n);

this.n = n;

// 生產完畢,容器中已經有資料

flag = true;

notifyall();

}}

package threadproj;

public class testa

}

java執行緒間通訊

執行緒間通訊 其實就是多個執行緒在操作同乙個資源,但是操作的動作不同 等待喚醒機制 wait notify notifyall 都是用在同步中,因為要對持有監視器 鎖 的執行緒操作。所以要是用在同步中,因為只有同步才具有鎖。等待喚醒必須是同乙個鎖,而鎖可以是任意物件,所以可以被任意物件呼叫的方法定義...

Java執行緒間通訊

要求用子執行緒和主線程實現 子執行緒輸出20次,主線程輸出50次,然後再子執行緒輸出20次,主線程輸出50次,如此迴圈20次 1 建立乙個用於輸出的業務類 business class business catch interruptedexception e for int i 0 i 10 i ...

java執行緒間通訊

執行緒間進行輸入 輸出通訊最常用的方式是 管道 方式。乙個執行緒從管道一端寫入資料,另乙個執行緒從管道另一端讀出資料。public class pipedio class pipesender extends thread public void run catch ioexception e cl...