慕田峪7331174
2021-11-11 18:12:34
我試圖在 classA 中包含一個等待函數,但我想notify()從 classB 中。我怎樣才能做到這一點?
1 回答

慕標5832272
TA貢獻1966條經驗 獲得超4個贊
您在這里有多種選擇。最簡單的是創建一個對象,實際上是任何類型,并在兩個類之間共享該對象。
java中的任何對象都可以有notify()和wait()方法。
所以你可以創建一個對象
Object sharedObject = new Object();
然后將該對象傳遞給兩個類(或更準確地說,類的實例)
ClassA a = new ClassA(sharedObject);
ClassB b = new ClassB(sharedObject);
然后在 ClassA 中的一些方法中,您可以調用:
synchronized(sharedObject) {
sharedObject.wait();
}
在一個線程上,然后在另一個線程上,您可以通過調用來喚醒它:
synchronized(sharedObject) {
sharedObject.notify();
}
這是執行此操作的基本方法。請注意,在等待或通知之前,您需要對該對象進行同步。
有一種更先進和更強大的方法來做到這一點,使用條件變量。
您可以在這個優秀的在線課程https://www.udemy.com/java-multithreading-concurrency-performance-optimization/?couponCode=CONCURRENCY 中了解更多相關信息
它真的很便宜,但教你如何很好地使用所有這些并發技術。
添加回答
舉報
0/150
提交
取消