我閱讀了文章「http://www.ibm.com/developerworks/java/library/j-jtp10264/」。他們提到「鎖定框架是兼容的替代品」。我明白,通過使用Reentrant鎖,我們可以在方法中保持鎖定,等待鎖定一段時間(使用同步塊(或)方法是不可能的)。我的疑問是,是否有可能用帶有重入鎖的同步機制來替換應用程序?是可重入鎖是否完全替換同步?
例如,我想實現一個線程安全堆棧數據結構,其中所有push,pop,getTop方法都是同步的,所以在多線程環境中,一次只有一個線程可以訪問一個synchronized方法如果一個線程使用push方法,則其他線程無法訪問push,pop,getTop(或)Stack類的任何其他同步方法)。使用Reentrant鎖可以實現相同的線程安全堆棧數據結構嗎?如果可能,請提供一個例子來理解這一點。
有,因爲Java 5的許多替代'synchronized'聲明,不僅是'鎖'。在你的情況下,你可能想利用'java.util.concurrent'包中的synchronized集合,而不是重新發明輪子。 – Mena
亞..我知道併發收集,但我的問題是,是否有可能使用鎖定框架實現完整的線程安全數據結構。 –
你無法用'Lock's做的一件事,但你可以用'synchronized'來做,它是通過池中的對象來濫用它的。總的來說可能不是一件壞事。 – biziclop