¿Qué prácticas de sincronización JVM puedo ignorar asumiendo que sé que voy a ejecutar en x64 cpus?

Sé que el modelo de memoria JVM está hecho para el mínimo común denominador de CPU, por lo que tiene que asumir el modelo más débil posible de una CPU en la que pueda ejecutarse la JVM (por ejemplo, ARM).

Ahora, considerando que x64 tiene un modelo de memoria bastante fuerte, ¿qué prácticas de sincronización puedo ignorar, suponiendo que sepa que mi programa solo se ejecutará en CPU x86 de 64 bits? ¿Esto también se aplica cuando mi programa se ejecuta a través de la virtualización?

Ejemplo:
Se sabe que el modelo de memoria de JVM requiere sincronizar el acceso de lectura / escritura a largos y dobles, pero se puede suponer que las lecturas / escrituras de otras primitivas de 32 bits como int, float, etc. son atómicas.

Sin embargo, si sé que estoy ejecutando en una máquina x86 de 64 bits, ¿puedo ignorar el uso de bloqueos en largos / dobles sabiendo que la CPU leerá / escribirá atómicamente valores de 64 bits y los mantendrá volátiles (como lo haría con ints / floats )?

Respuestas a la pregunta(5)

Su respuesta a la pregunta