。例如,我們在一個多線程項目中名爲TestThreadSafe的項目中有一個類。線程安全的實例字段
public class TestThreadSafe {
public AtomicLong pCounter = new AtomicLong();
public AtomicLong mCounter = new AtomicLong();
protected final ConcurrentMap<K, V> Map = new ConcurrentHashMap<K, V>();
private ScheduledExecutorService ses;
private String dir;
}
這裏,爲什麼不把ses和dir定義爲最終或易失性字段?
我們不知道這些領域的使用。如果它們不用於多線程上下文,則不需要volatile。如果你不改變參考,最終不需要 –
TestThreadSafe在困惑實例字段變量修改,哪些字段應該聲明爲final,易揮發或實例字段變量之前別的東西多線程上下文 – lawrence