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