最赞回答 / 鬼羽子
                                
                                                            32bit数据的读写是一个原子操作,对64bit数据加volatile仅仅只是保证数据的读写具有不可重入性以及可见性——这样就够了。第一个32bit读完之后,才允许读第二个32bit,且必须从主线程内存中刷新,这样可以保证数据的有效性。
                            
                        
                        2015-05-17
                
            
                                已采纳回答 / passionfoure
                                
                                                            这里面有两个VOLATILE变量,它包含了一个不变式就是LOW<UP( if (value > upper) 和   if (value < low) )public class A {    private volatile int low=0;   private volatile int up=100;   public int getLow() { return low; }    public int getUp() { return up; }    public void ...
                            
                        
                        2015-05-16
                
            
                                最赞回答 / meetyu
                                
                                                            volatile本身不保证获取和设置操作的原子性,仅仅保持修改的可见性。但是java的内存模型保证声明为volatile的long和double变量的get和set操作是原子的
                            
                        
                        2015-05-06
                
            
                                已采纳回答 / meetyu
                                
                                                            volatile本身不保证获取和设置操作的原子性,仅仅保持修改的可见性。但是java的内存模型保证声明为volatile的long和double变量的get和set操作是原子的
                            
                        
                        2015-04-28
                
             
             
        












