public class Demo1 {
    //volatile保证内存可见性
    private  volatile static  Demo1 instance;
    public static Demo1 getInstance(){
        if(instance==null){
            synchronized (Demo1.class){
                if(instance==null){
                    instance=new Demo1();
                }
            }
        }
        return instance;
    }
    /**
     * 构造方法私有化,不被外部创建
     */
    private Demo1(){
        System.out.println("Demo1 created");
    }
}
测试代码:
public class Demo1Test {
    @Test
    public void test1(){
        Demo1 instance1 = Demo1.getInstance();
        Demo1 instance2 = Demo1.getInstance();
        Demo1 instance3 = Demo1.getInstance();
        Assert.assertTrue(instance1.equals(instance2));
        Assert.assertTrue(instance1.equals(instance3));
    }
}
测试结果:

原文:https://www.cnblogs.com/liwei2018/p/9029911.html