Лучше, чем 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());
}
Другие вопросы по тегам