带有番石榴集合的线程安全HashSet
就像标题所说,我想使用Guava Collections获得一个线程安全的HashSet。
你能帮助我吗?
谢谢!
Set set = Collections.newSetFromMap(new ConcurrentHashMap());
这将是正确的答案,使用Guava中的Sets类。 无论如何,来自@crhis的回答很好。
Sets.newSetFromMap(new ConcurrentHashMap());
Google Collections 有一段名为Sets.newConcurrentHashSet()的工厂方法。
它的实现类似于克里斯的建议:
public static Set newConcurrentHashSet() { return newSetFromMap(new ConcurrentHashMap()); }
他们在com.google.common.collect.Sets类中有一个newSetFromMap()方法(由Doug Lea在JCP JSR-166成员的帮助下编写)。 该方法已添加到java 1.6 中的java.util.Collections中。
它已在Google Collections 1.0rc1中撤销,因为有计划更好地支持Guava中的并发集( 此处有更多信息)。
这篇文章扩展了使用“newSetFromMap”方法来构造并发集。
Java 8引入了创建并发哈希集的新方法 – ConcurrentHashMap.newKeySet()
Set set = ConcurrentHashMap.newKeySet();
它比在Collections.newSetFromMap
包装更短