bei der Programmierung für ein Thread-sicheres Projekt, wie Sie bestimmen, welches Feld Thread sicher sein sollte. Zum Beispiel haben wir eine Klasse in einem Projekt namens TestThreadSafe in einem Multithread-Projekt.Thread Safe für Instanz Felder
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;
}
Hier, warum ses und dir nicht als endgültige oder volatile Felder definieren?
Wir kennen die Verwendung dieser Felder nicht. Wenn sie nicht im Multithreading-Kontext verwendet werden, ist volatile nicht erforderlich. Wenn Sie die Referenz nicht ändern, ist final nicht erforderlich. –
TestThreadSafe wird im Multi Threading-Kontext verwendet – lawrence