java 单例模式的两种常用写法

来源:互联网 发布:数学建模知乎 编辑:程序博客网 时间:2024/06/04 18:09

1. 双重校验锁:


/*** * 单例模式之双重校验锁 * @since jdk 1.5 * @author yerui *2015年12月17日 */public class SingletonOne {    private  static SingletonOne instance = null; private  SingletonOne() {    }    public static SingletonOne getInstance(){if(instance == null){synchronized(SingletonOne.class){if(instance == null){instance = new  SingletonOne();}}}return   instance;}}

注:在JDK1.5之后,双重检查锁定才能够正常达到单例效果。这是工作中经常用的单例模式。

2.静态内部类模式

/*** * 单例模式之静态内部类 * @author yerui *2015年12月17日 */public class SingletonTwo {    private  SingletonTwo(){        }private static class SingletonHolder{private static final SingletonTwo INSTANCE  = new  SingletonTwo();}public static final  SingletonTwo getInstance(){return  SingletonHolder.INSTANCE;}}
这种方式同样利用了classloder的机制来保证初始化instance时只有一个线程


0 0