开发者

Thread-safe HashSet with Guava Collections

Like the title says, i wou开发者_JS百科ld like to get a thread-safe HashSet using Guava Collections.

Are any available?


Set<K> set = Collections.newSetFromMap(new ConcurrentHashMap<K, Boolean>());


This would be the right answer, Using the Sets class from Guava. Anyway the answer from @crhis was good intended.

Sets.newSetFromMap(new ConcurrentHashMap<V, Boolean>());


Java 8 introduces new way to create concurrent hash set - ConcurrentHashMap.newKeySet()

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

It's shorter than wrapping in Collections.newSetFromMap


Google Collections had a factory method named Sets.newConcurrentHashSet() for a while.

Its implementation was similar to Chris's suggestion:

public static <E> Set<E> newConcurrentHashSet() {
  return newSetFromMap(new ConcurrentHashMap<E, Boolean>());
}

They had a newSetFromMap() method inside the com.google.common.collect.Sets class (written by Doug Lea with assistance from members of JCP JSR-166). That method was added to java.util.Collections in java 1.6.

It was withdrawn in Google Collections 1.0rc1, since there are plans to better support concurrent sets in Guava (more information here).

This post expands on the use of the "newSetFromMap" method to construct concurrent sets.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜