带有番石榴集合的线程安全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包装更短