java内存模型要求lock、unlock、read、load、assign、use、store、write这8个操作都具有原子性,但是对于64位的数据类型(long和double),在模型中特别定义了一条先对宽松的规定:允许虚拟机将没有被volatile修饰的64位数据的读写操作划分为2次32位的操作来执行,即允许虚拟机实现选择可以不保证64位数据类型的read、store、load和write这4个操作的原子性。这就是所谓的long和double的非原子性协定(Nonatomic Treatment of double and long Variables)
--《深入理解JVM虚拟机第二版》
首先:以上针对于32位虚拟机来讲的,64位JVM虚拟机不用考虑了,不存在这种情况;
其次:针对商业虚拟机来讲,基本都把long和double的操作实现为原子性操作;
以上,不必担心。(虽然虚拟机规定volatile修饰的long和double具有原子性),完全没有必要添加。