的HashSet<> IPs = new HashSet<>();
我将有多个线程访问和修改它。添加volatile这个词是否足以防止腐败?如何防止冲突线程访问的基本解释将帮助我更好地理解这些关键字,我不太清楚。
答案 0 :(得分:0)
volatile
只使变量本身是线程安全的。这意味着分配新值或读取变量是线程安全的,而不是存储在变量中的对象的方法调用。 Collections.synchronizedSet(Set set)
可能需要您的需求。
HashSet<String> names = new HashSet<>();
Set<String> threadSafe = Collections.synchronizedSet(names);
答案 1 :(得分:0)
您应该查看java.util.concurrent
包。并发集合非常performant。特别是ConcurrentSkipListSet
和CopyOnWriteArraySet
。