如此處所述:ConcurrentHashMap in Java? Java中的併發散列表是線程安全的。 Java控制器用於Web請求,可以從Web同時調用。Java控制器上的HashMap或ConcurrentHashMap?
我的問題是:我應該在Java上使用併發哈希映射而不是哈希映射嗎?
如此處所述:ConcurrentHashMap in Java? Java中的併發散列表是線程安全的。 Java控制器用於Web請求,可以從Web同時調用。Java控制器上的HashMap或ConcurrentHashMap?
我的問題是:我應該在Java上使用併發哈希映射而不是哈希映射嗎?
如果您要在寫入或兩個併發寫入的同時進行併發讀取,則只需要一個ConcurrentHashMap
。如果初始化後永遠不會更改映射,則常規的HashMap
就足夠了。
控制器通常不應包含任何特定於請求的狀態(應將任何此類狀態作爲參數傳遞給方法),並且如果以這種方式設計控制器,則不應在控制器中需要任何同步。
如果你有多個線程訪問同一個hashmap,你需要同步這個訪問。
可以通過使用像ConcurrentHashMap那樣已經實現的對象來實現,或者編寫自己的同步代碼並使用普通的HashMap。
你能舉一個例子嗎?有一個控制器需要一個並行哈希映射,哪個不需要? – kamaci 2012-08-16 06:52:33
@kamaci:正如我所提到的,設計良好的控制器不應該維護任何狀態,也不應該要求併發哈希映射。 – casablanca 2012-08-16 06:59:57