HashSet заснований на HashMap.
Якщо ми подивимось на HashSet<E>
реалізацію, все керовано в рамках HashMap<E,Object>
.
<E>
використовується як ключ від HashMap
.
І ми знаємо, що HashMap
це не безпечно для ниток. Ось чому ми маємо ConcurrentHashMap
на Java.
Виходячи з цього, я плутаю, що чому ми не маємо ConcurrentHashSet, який повинен базуватися на ConcurrentHashMap
?
Чи є ще щось, чого я пропускаю? Мені потрібно використовувати Set
в багатопотоковому середовищі.
Крім того , якщо я хочу , щоб створити свій власний ConcurrentHashSet
я можу домогтися цього, просто замінивши HashMap
на ConcurrentHashMap
і залишити решту як є?
ConcurrentSkipListSet
, побудовано на тому ConcurrentSkipListMap
, що реалізує ConcurrentNavigableMap
та ConcurrentMap
.