java同步集合选择以满足应用程序需求

时间:2014-06-19 16:45:01

标签: java

同步集合在java中是什么意思。如果我从servlet打印jsp页面中的用户记录,可以选择哪个开发应用程序?可以选择以下

  1. HashMap中
  2. 哈希表

2 个答案:

答案 0 :(得分:1)

同步是控制多个线程对任何共享资源的访问的能力。

java.util.CollectionssynchronizedCollection(),synchronizedSet(), synchronizedSortedMap(),synchronizedSortedSet()的同步集合类 Hashtable Vector 以及 static 方法提供了Map,List和Set的基本条件线程安全实现。

正如 Javadocs 所说 - 如果不需要线程安全的实现,建议使用HashMap代替Hashtable。如果需要线程安全的高度并发实现,那么建议使用ConcurrentHashMap代替Hashtable。

HashtableConcurrentHashMap之间的区别:ConcurrentHashMap仅锁定了Map的某些部分,而Hashtable在执行迭代时锁定了完整的地图

ConcurrentHashMap旨在实现并发性和提高性能,而HashMap本质上不同步的Collections.synchronizedMap()可以通过使用ConcurrentHashMap应用包装来同步。

区别:HashMap不允许空键或空值,而{{1}}允许空键。

答案 1 :(得分:0)

同步集合是对多个线程的并发更新进行线程安全的集合。一般来说,在Java中:

  • 绝不使用Hashtable。请改用ConcurrentHashMap。尽管Hashtable是线程安全的,但ConcurrentHashMap具有更好的性能并提供相同的并发保证。
  • 如果您不需要并发(即地图只能由一个线程使用),请使用HashMap

至于JSP问题,这实际上取决于。如果您要跨多个线程共享相同的地图实例(例如,如果它"全局"在应用程序中),则使用ConcurrentHashMap。如果你在一个请求中创建它,那么在你完成之后就把它删除,并且它从未在另一个线程中使用过,那么只需使用HashMap。

this问题还有一些细节。