同步的集合類Hashtable
和Vector
,以及同步的包裝器類Collections.synchronizedMap
和Collections.synchronizedList
,為Map
和List
提供了基本的有條件的線程安全的實現(xiàn)。然而,某些因素使得它們并不適用于具有高度并發(fā)性的應(yīng)用程序中――它們的集合范圍的單鎖特性對于可伸縮性來說是一個障礙,而且,很多時候還必須在一段較長的時間內(nèi)鎖定一個集合,以防止出現(xiàn)ConcurrentModificationException
s異常。
ConcurrentHashMap
和CopyOnWriteArrayList
實現(xiàn)提供了更高的并發(fā)性,同時還保住了線程安全性,只不過在對其調(diào)用者的承諾上打了點折扣。ConcurrentHashMap
和CopyOnWriteArrayList
并不是在您使用HashMap
或ArrayList
的任何地方都一定有用,但是它們是設(shè)計用來優(yōu)化某些特定的公用解決方案的。許多并發(fā)應(yīng)用程序?qū)膶λ鼈兊氖褂弥蝎@得好處。
總結(jié):在多線程并發(fā)情況下,為了避免ConcurrentModificationException
s異常,建議使用ConcurrentHashMap
和CopyOnWriteArrayList
。
posted on 2010-01-07 18:04
冰是沒有未來的,因為它的永恒 閱讀(205)
評論(0) 編輯 收藏 所屬分類:
java