2009-05-05 49 views
1

JDK的ConcurrentHashMap使用鎖分條技術。最小化鎖定開銷是個不錯的主意。有沒有其他的庫或工具可以利用它? 例如,數據庫引擎是否使用它?鎖分條的應用領域

如果這項技術在其他領域沒有那麼有用,那麼它的侷限性是什麼?

回答

4

當有一種將高爭用鎖分成多個鎖而又不影響數據完整性的方法時,鎖帶是很有用的。如果這是可能的,應該採取一些思路,並非總是如此。數據結構也是決定的因素。因此,如果我們使用大數組來實現哈希表,那麼使用整個哈希表的單個鎖來同步它將導致線程順序訪問數據結構。如果這是散列表上的相同位置,那麼它是必要的,但是,如果他們正在訪問表格的兩個極端值,該怎麼辦?

使用鎖定條紋確實節省了大量時間。 scenario的多次運行幾乎減少了執行時間的一半。

鎖條紋的下方是很難得到受條紋影響的數據結構的狀態。在這個例子中,表的大小,或者試圖列出/枚舉整個表可能很麻煩,因爲我們需要獲取所有的條形鎖。