Quais práticas de sincronização da JVM posso ignorar, assumindo que sei que executarei em x64 cpus?

Eu sei que o modelo de memória da JVM é feito para o menor denominador comum de CPUs, portanto, ele deve assumir o modelo mais fraco possível de uma CPU no qual a JVM possa executar (por exemplo, ARM).

Agora, considerando que o x64 tem um modelo de memória bastante forte, que práticas de sincronização posso ignorar, supondo que eu saiba que meu programa será executado apenas em CPUs x86 de 64 bits? Isso também se aplica quando meu programa está sendo executado através da virtualização?

Exemplo:
É sabido que o modelo de memória da JVM requer sincronizar o acesso de leitura / gravação a longos e duplos, mas pode-se supor que a leitura / gravação de outras primitivas de 32 bits, como int, float etc., sejam atômicas.

No entanto, se eu sei que estou executando em uma máquina x86 de 64 bits, posso ignorar o uso de bloqueios em comprimentos / duplos, sabendo que a CPU lerá / gravará atomicamente valores de 64 bits e apenas os manterá voláteis (como faria com ints / floats) )?

questionAnswers(5)

yourAnswerToTheQuestion