HashSet si basa su HashMap.
Se guardiamo HashSet<E>
all'implementazione, tutto è gestito sotto HashMap<E,Object>
.
<E>
è usato come chiave di HashMap
.
E sappiamo che HashMap
non è thread-safe. Ecco perché abbiamo ConcurrentHashMap
in Java.
Sulla base di questo, sono confuso dal fatto che non abbiamo un ConcurrentHashSet che dovrebbe essere basato sul ConcurrentHashMap
?
C'è qualcos'altro che mi manca? Devo usare Set
in un ambiente multi-thread.
Inoltre, se voglio crearne uno mio ConcurrentHashSet
posso ottenerlo semplicemente sostituendo il HashMap
to ConcurrentHashMap
e lasciando il resto com'è?
ConcurrentSkipListSet
è basato su ConcurrentSkipListMap
, che implementa ConcurrentNavigableMap
e ConcurrentMap
.