JUC学习23:理解JMM
- 
面试题:请你谈谈你对Volatile的理解: 
- 
Volatile是Java虚拟机提供 轻量级的同步机制;
- 
1,保证可见性(JMM); 
- 
2,不保证原子性; 
- 
3,禁止指令重排; 
- 
什么是JMM: - 
JMM:Java内存模型,不存在的东西,概念,是一种约定; 
 
- 
- 
关于JMM的一些同步约定: - 
线程解锁前:必须把共享变量 立刻刷回主存;
- 
线程加锁前:必须读取 主存中的最新值读到工作内存中!
- 
加锁和解锁,必须是同一把锁; 
 
- 
- 
线程:工作内存,主内存: - 
1,JMM内存模型:  
- 
2,8种操作:  发现问题:  
 
- 
- 
测试代码:问题重现:线程1无法停止 //程序不知道主内存中的值已经被修改过了
 public class Demo01 {
 
 private static int num=0;
 
 public static void main(String[] args) throws InterruptedException { //主线程
 
 new Thread(()->{//线程1
 while (num==0){
 
 }
 }).start();
 
 TimeUnit.SECONDS.sleep(1);
 
 num=1;
 
 System.out.println(num);
 
 }
 }
 
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号