双重检查加锁机制--解决线程安全

来源:互联网 发布:淘宝恒源祥羊毛衫价格 编辑:程序博客网 时间:2024/04/30 14:05

双重检查加锁机制,指的是;并不是每次进入getInstance方法都需要同步,而是先不同步,进入方法过后,先检查实例是否存在,如果实例不存在才进入下面的同步锁,这是第一重检查。进入同步块后,再次检查实例是否存在,如果不存在就在同步快中创建一个实例。这样,只需同步一次,从而减少了同步情况下进行判断浪费的时间。

 package singleton;public class Test {    private volatile static Test instance = null;    private Test(){}    public static Test getInstance(){        //先检查实例是否存在,如果不存在才进入下面的同步块        if(instance == null){            //同步块,线程安全的创建实例            synchronized(Test.class){                //再次检查实例是否存在,如果不存在创建实例                if(instance==null){                    instance = new Test();                }            }        }        return instance;    }}


0 0
原创粉丝点击