Welche Methoden zur JVM-Synchronisierung kann ich ignorieren, vorausgesetzt, ich weiß, dass ich auf einem x64-CPU laufen werde?
Ich weiß, dass das JVM-Speichermodell für den niedrigsten gemeinsamen Nenner von CPUs ausgelegt ist, daher muss es das schwächste mögliche Modell einer CPU annehmen, auf der die JVM ausgeführt werden kann (z. B. ARM).
Welche Synchronisationsmethoden kann ich ignorieren, wenn ich davon ausgehe, dass mein Programm nur auf 64-Bit-x86-CPUs ausgeführt werden kann, da x64 über ein relativ starkes Speichermodell verfügt? Gilt dies auch, wenn mein Programm durch Virtualisierung ausgeführt wird?
Beispiel:
Es ist bekannt, dass das Speichermodell von JVM das Synchronisieren des Lese- / Schreibzugriffs auf Longs und Doubles erfordert. Man kann jedoch davon ausgehen, dass Lese- / Schreibzugriffe auf andere 32-Bit-Primitive wie int, float usw. atomar sind.
Wenn ich jedoch weiß, dass ich auf einer 64-Bit-x86-Maschine arbeite, kann ich die Verwendung von Sperren für Longs / Doubles ignorieren, da ich weiß, dass die CPU 64-Bit-Werte atomar liest / schreibt und sie einfach flüchtig hält (wie ich es mit ints / floats tun würde) )?