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