1、谈谈你对volatile的理解?
1.1保证可见性
1.2不保证原子性
1.3禁止指令重排
2、JMM你谈谈?
2.1可见性
2.2原子性
2.4有序性
3、你在哪些地方用到过volatile?
3.1 单例模式DCL代码(DCL+volatile)
3.2代理模式volatile分析
public class SingletonDemo {
private static volatile SingletonDemo instance=null;
private SingletonDemo(){
System.out.println(Thread.currentThread().getName()+"\t 构造方法");
}
/**
* 双重检测机制
* @return
*/
public static SingletonDemo getInstance(){
if(instance==null){
synchronized (SingletonDemo.class){
if(instance==null){
instance=new SingletonDemo();
}
}
}
return instance;
}
public static void main(String[] args) {
for (int i = 1; i <=10; i++) {
new Thread(() ->{
SingletonDemo.getInstance();
},String.valueOf(i)).start();
}
}
}