Ich verstehe volatile
sollte in einem Klassenfeld verwendet werden, um zu verhindern, dass die JVM den Wert zwischenspeichert, so dass es immer der neueste Wert sein wird, wenn es gelesen wird.Wann sollten wir Felder als "flüchtig" definieren? Wann ist es unnötig?
Wenn mein Verständnis richtig ist, bedeutet das nicht, dass wir alle Felder mit volatile
definieren sollten, wenn wir in einer Thread-sicheren Multi-Thread-Umgebung arbeiten? Wann ist es nicht notwendig, ein Feld als volatile
zu definieren?
* Wir sollten alle Felder mit flüchtigen definieren * Jedes Feld jedes Objekts? Nein. Nur Felder, auf die mehrere gleichzeitige Threads zugreifen können. – shmosel
volatile verhindert, dass die JVM den Code für Ihre Variable optimiert. Wenn Sie alle Felder als flüchtig definieren, verlieren Sie eine Menge Leistung. –