Hashset Multiple Threads保持完整性?

时间:2015-03-25 03:43:58

标签: java

的HashSet<> IPs = new HashSet<>();

我将有多个线程访问和修改它。添加volatile这个词是否足以防止腐败?如何防止冲突线程访问的基本解释将帮助我更好地理解这些关键字,我不太清楚。

2 个答案:

答案 0 :(得分:0)

volatile只使变量本身是线程安全的。这意味着分配新值或读取变量是线程安全的,而不是存储在变量中的对象的方法调用。 Collections.synchronizedSet(Set set)可能需要您的需求。

HashSet<String> names = new HashSet<>();
Set<String> threadSafe = Collections.synchronizedSet(names);

答案 1 :(得分:0)

您应该查看java.util.concurrent包。并发集合非常performant。特别是ConcurrentSkipListSetCopyOnWriteArraySet