我需要喚醒或發送睡眠單一線程有時,我想知道什麼是最好和最有效的方式來做到這一點。通知單線程:notify,notifyAll或concurrent.locks.Condition?
第一個解決方案是信號結合wait-notify
(我知道如何正確實現這種模式,這不是問題)。
我在某處使用java.concurrent庫和CountDownLatch
來讀取信號更有效。我也檢查了concurrent.locks.Condition,但this話題指出,它僅僅是一個(程序員方面)更安全和通用的結構,與notify/notifyAll
相比沒有性能優勢。 Peter Lawrey建議使用併發庫,而不是notify-notifyAll
this評論,所以現在我很困惑什麼是最佳實踐使用。
一個相關的問題:哪個更好的性能,notify
或notifyAll
在我的情況(即如果我有一個線程)?我知道有很多類似的線索,但他們都沒有給出明確的答案。就我而言,在功能上,我使用哪個並不重要,但是我想知道哪個更快。
我幾乎總是半信賴彼得勞瑞的建議。 – Eugene
我只會這樣做,如果邏輯參數(親,反)是平衡的,或者如果問題是經驗性的,不能分析接近。 –