码迷,mamicode.com
首页 > 编程语言 > 详细

java--jmm知识

时间:2020-05-19 18:43:03      阅读:68      评论:0      收藏:0      [点我收藏+]

标签:private   vat   完成后   volatile   并发处理   static   程序   可见   on()   

volatile :保证可见性,但保证不了原子性。

保证不了原子性,所以在遇到数据并发处理的情况无法保证数据不一致,线程不安全。

 

dcl:双重检锁机制

public class Singleton {
   private static Singleton singleton;

   private Singleton(){}

   public static Singleton getInstance(){
       if(singleton == null){                              // 1
           synchronized (Singleton.class){                 // 2
               if(singleton == null){                      // 3
                   singleton = new Singleton();            // 4
               }
           }
       }
       return singleton;
   }
}
  • 锁前检查,如果检查第一个singleton不为null,则不需要执行下面的加锁动作,极大提高了程序的性能;
  • 锁后检查,保证当第一个获取锁的线程创建完成后singleton对象后,其他线程即使拿到锁后,也不会创建对象;

java--jmm知识

标签:private   vat   完成后   volatile   并发处理   static   程序   可见   on()   

原文地址:https://www.cnblogs.com/wllhq/p/12918171.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!