我正与同事进行热烈的讨论,因为他不想承认使用Java包中的现有类比编写自己的类更好。
我们希望以线程安全的方式访问集合,以便迭代器也可以工作。
我找到了班级ConcurrentSkipListSet
,但它需要我实现我们不需要的Comparable
接口。他认为这比编写整个同步的东西更糟糕。我说不。
是否有一个比ConcurrentSkipListSet更好的Java类,它不能让我实现Comparable
?
答案 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());
}