HashSet jest oparty na HashMap.
Jeśli spojrzymy na HashSet<E>
implementację, wszystko jest zarządzane w ramach HashMap<E,Object>
.
<E>
jest używany jako klucz HashMap
.
I wiemy, że HashMap
nie jest to bezpieczne dla wątków. Właśnie dlatego mamy ConcurrentHashMap
Javę.
Na tej podstawie jestem zdezorientowany, dlaczego nie mamy ConcurrentHashSet, który powinien być oparty na ConcurrentHashMap
?
Czy coś jeszcze mi brakuje? Muszę używać Set
w środowisku wielowątkowym.
Ponadto, jeśli chcę stworzyć własny, ConcurrentHashSet
czy mogę to osiągnąć, po prostu zastępując HashMap
go ConcurrentHashMap
i pozostawiając resztę bez zmian?
ConcurrentSkipListSet
jest oparte na ConcurrentSkipListMap
implementacji ConcurrentNavigableMap
i ConcurrentMap
.