同步的集合类Hashtable和Vector,以及同步的包装器类Collections.synchronizedMap和Collections.synchronizedList,为Map和List提供了基本的有条件的线程安全的实现。然而,某些因素使得它们并不适用于具有高度并发性的应用程序中――它们的集合范围的单锁特性对于可伸缩性来说是一个障碍,而且,很多时候还必须在一段较长的时间内锁定一个集合,以防止出现ConcurrentModificationExceptions异常。
ConcurrentHashMap和CopyOnWriteArrayList实现提供了更高的并发性,同时还保住了线程安全性,只不过在对其调用者的承诺上打了点折扣。ConcurrentHashMap和CopyOnWriteArrayList并不是在您使用HashMap或ArrayList的任何地方都一定有用,但是它们是设计用来优化某些特定的公用解决方案的。许多并发应用程序将从对它们的使用中获得好处。
总结:在多线程并发情况下,为了避免ConcurrentModificationExceptions异常,建议使用ConcurrentHashMap和CopyOnWriteArrayList。
posted on 2010-01-07 18:04
冰是没有未来的,因为它的永恒 阅读(208)
评论(0) 编辑 收藏 所属分类:
java