java手写单例模式


1 懒汉模式

public class Singleton {

    private Singleton singleton = null;

    private Singleton() {

    }

    public Singleton getInstance() {

       if (singleton == null) {

            singleton = new Singleton();
       } else {

            return singleton;

        }

    }
}

问题在于不是线程安全的。要线程安全,在getInstance前面加上synchronized关键字即可,但是开销太大。

2 饿汉模式

public class Singleton {

    private Singleton singleton = new Singleton();

    private Singleton() {

    }

    public Singletion getSingleton() {

        return singleton;
    }

}

 

3 静态内部类

public class Singleton {

    private static class SingletonHolder {

        private static Singleton instance = new Singleton();

    }

    public static Singleton getInstance() {

        return SingletonHolder.instance;
    }

}

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM