Non so assolutamente la differenza tra queste due parole chiave di Java.

So solo che una operazione atomica è un'operazione che o viene eseguita o non viene eseguita, cioè non può essere interrotta "durante" la stessa.

Volatile è una parola chiave posta prima del tipo di una variabile: su tale variabile, le operazioni di scrittura e lettura vengono eseguite in maniera, appunto, atomica, con la conseguente impossibilità di errori in fase di get o set.

Ma qualcuno potrebbe spiegarmi meglio se c'è un altro legame tra le due keywords?

Inoltre ricordo di aver letto qualcosa a proposito dei tipo long e double, i quali "davano problemi" insieme alla parola volatile.

Sogno o son desto?