这段代码中 volatile 是多余的吗?
public class Test {
private volatile Map<String, String> map = null;
public void resetMap() { map = new ConcurrentHashMap<>(); }
public Map<String, String> getMap() { return map; }
}
换句话说,是否map = new ConcurrentHashMap<>();
提供任何可见性保证?
据我所知,唯一提供的保证ConcurrentMap
是:
在将对象作为键或值放入 ConcurrentMap 之前线程中的操作发生在另一个线程中从 ConcurrentMap 访问或删除该对象之后的操作。
java.util.concurrent(CopyOnWriteArrayList 等)中的其他线程安全集合怎么样?