Set是否有任何线程安全类

时间:2015-07-04 19:46:19

标签: java list dictionary set

我们有List for List和Hashtable for Map。

同样,我们是否有任何具有Set?

的线程安全方法的类

3 个答案:

答案 0 :(得分:1)

有一些方法可以获得线程安全集。一些例如。

  1. CopyOnWriteArraySet
  2. Collections.synchronizedSet(Set set) 等
  3. 查看此内容以获取更多详情 - Different types of thread-safe Sets in Java

答案 1 :(得分:1)

一个选项:(java8)

Set<String> set = ConcurrentHashMap.newKeySet();

类似于HashSet,但也可以安全地同时使用。

答案 2 :(得分:1)

VectorHashtable是引入Collection框架之前的遗留物,如果可能,应该避免使用。 “新”方法是使用java.util.concurrent包中的专门收藏,或者制作正常的List / Map / Set,然后使用{{1实用程序使它们同步。见https://docs.oracle.com/javase/8/docs/api/java/util/Collections.html#synchronizedSet-java.util.Set-

请记住,对于使用Collections.synchronized...获取的对象使用迭代器时要同步,因为迭代器未同步且需要手动同步。没有任何同步可以导致Collections.synchronized...