0
首先是一些背景:在Java中所有條件等待的結構允許虛假喚醒這可能會使公平。我一直在寫一個ReadWrite鎖的實現,它以嚴格的到達順序爲接收線程提供服務。在Java中鎖定大量條件的任何潛在問題?
現在,我的算法創建一個新的java.util.concurrent.Condition每一個線程進入我已經寫了上課時間。我想知道這種行爲是否可取,或者是否存在這種模式的不良副作用,如大規模放緩。
首先是一些背景:在Java中所有條件等待的結構允許虛假喚醒這可能會使公平。我一直在寫一個ReadWrite鎖的實現,它以嚴格的到達順序爲接收線程提供服務。在Java中鎖定大量條件的任何潛在問題?
現在,我的算法創建一個新的java.util.concurrent.Condition每一個線程進入我已經寫了上課時間。我想知道這種行爲是否可取,或者是否存在這種模式的不良副作用,如大規模放緩。
嗯,就像所有的性能問題,你通常應該嘗試的清潔方式,然後再測試。這就是說,創建和GC化短期對象 - 即使其中很多 - 是JVM特別擅長的。
問題:爲什麼不能我們使用Java公平鎖。 (新的ReentrantLock(布爾公平))? – Gamlor 2010-09-13 09:11:18
最根本的問題是,等待條件中的虛假喚醒,這可能會使事情相當嚴重受損。不幸的是,使用公平的鎖定不會再次助長虛假的喚醒。 – svenningsson 2010-09-13 11:47:30