如果我不想要Comparable IF,那么比ConcurrentSkipListSet更好的类型

时间:2015-09-28 09:23:35

标签: java set java.util.concurrent skip-lists

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

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

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

是否有一个比ConcurrentSkipListSet更好的Java类,它不能让我实现Comparable

1 个答案:

答案 0 :(得分:0)

要以线程安全的方式访问Set,最好使用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());
}