Лучше, чем ConcurrentSkipListSet, если я не хочу сопоставимый IF
У меня горячая дискуссия с коллегой, потому что он не хочет признать, что лучше использовать существующие классы из пакета Java, чем писать свои собственные.
Мы хотим получить доступ к набору потокобезопасным способом, чтобы итераторы также работали.
Я нашел класс ConcurrentSkipListSet
но мне нужно, чтобы реализовать Comparable
интерфейс, который нам не нужен. Он утверждает, что это хуже, чем писать весь синхронизированный материал. Я говорю нет.
Есть ли лучший класс Java, чем ConcurrentSkipListSet, который не заставляет меня реализовать Comparable
?
1 ответ
Чтобы получить доступ к множеству потокобезопасным способом, было бы лучше использовать Collections.synchronizedSet
а затем синхронизировать доступ к Set
для итерации:
Set<Object> s = Collections.synchronizedSet(new HashSet<>());
synchronized (s) {
Iterator<Object> i = s.iterator(); // Must be in the synchronized block
while (i.hasNext())
foo(i.next());
}