我们有List for List和Hashtable for Map。
同样,我们是否有任何具有Set?
的线程安全方法的类答案 0 :(得分:1)
有一些方法可以获得线程安全集。一些例如。
查看此内容以获取更多详情 - Different types of thread-safe Sets in Java
答案 1 :(得分:1)
一个选项:(java8)
Set<String> set = ConcurrentHashMap.newKeySet();
类似于HashSet,但也可以安全地同时使用。
答案 2 :(得分:1)
Vector
和Hashtable
是引入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...