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;
    }

}

 

posted @ 2018-04-20 23:13  PhoenixTree(梧桐树)  阅读(2960)  评论(0)    收藏  举报