O HashSet é baseado no HashMap.
Se observarmos a HashSet<E>
implementação, tudo será gerenciado HashMap<E,Object>
.
<E>
é usado como uma chave de HashMap
.
E sabemos que isso HashMap
não é seguro para threads. É por isso que temos ConcurrentHashMap
em Java.
Com base nisso, estou confuso de que por que não temos um ConcurrentHashSet que deve ser baseado no ConcurrentHashMap
?
Falta mais alguma coisa? Eu preciso usar Set
em um ambiente multiencadeado.
Além disso, se eu quiser criar o meu próprio, ConcurrentHashSet
posso consegui-lo apenas substituindo o HashMap
para ConcurrentHashMap
e deixando o resto como está?
ConcurrentSkipListSet
é construído ConcurrentSkipListMap
, o que implementa ConcurrentNavigableMap
e ConcurrentMap
.