2

我正在与一位同事进行激烈的讨论,因为他不想承认使用 Java 包中的现有类比编写自己的类更好。

我们希望以线程安全的方式访问集合,以便迭代器也可以工作。

我找到了这个类ConcurrentSkipListSet,但它需要我实现Comparable我们不需要的接口。他认为这比编写整个同步的东西更糟糕。我拒绝。

有没有比 ConcurrentSkipListSet 更好的 Java 类不能让我实现Comparable

4

1 回答 1

0

要以线程安全的方式访问 Set,最好使用Collections.synchronizedSet然后同步访问Setfor 迭代:

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());
}
于 2015-09-28T09:29:06.137 回答