volatile不能保证原子性吧,long和double用volatile修饰也不能保证原子性,应当采取concurrent包中的那个AutomicLong和AutomicDouble来修饰吧?
volatile本身不保证获取和设置操作的原子性,仅仅保持修改的可见性。但是java的内存模型保证声明为volatile的long和double变量的get和set操作是原子的