HashSet基于HashMap。
如果我们看一下HashSet<E>
的实现,所有的东西都被管理在HashMap<E,Object>
中。
<E>
被用作HashMap
的键。
而我们知道HashMap
不是线程安全的。这就是为什么Java有ConcurrentHashMap
。
基于此,我很困惑:为什么我们没有一个基于ConcurrentHashMap
的ConcurrentHashSet呢?
还有其他我需要注意的事情吗?我需要在多线程环境中使用Set
。
另外,如果我想创建自己的ConcurrentHashSet
,我可以只将HashMap
替换为ConcurrentHashMap
,其余内容保持不变吗?
ConcurrentSkipListSet
中看到,它是建立在ConcurrentSkipListMap
之上的,而ConcurrentSkipListMap
实现了ConcurrentNavigableMap
和ConcurrentMap
。 - Talha Ahmed Khan