Java中的懶漢模式和餓漢模式是兩種常用的單例設計模式,用于保證一個類在整個應用程序中只有一個實例對象。下面我們來看看這兩種模式的實現。
//懶漢模式(線程不安全) public class SingletonLazy { private static SingletonLazy instance; private SingletonLazy(){} public static SingletonLazy getInstance(){ if(instance == null){ instance = new SingletonLazy(); } return instance; } } //餓漢模式(線程安全) public class SingletonHungry { private static final SingletonHungry instance = new SingletonHungry(); private SingletonHungry(){} public static SingletonHungry getInstance(){ return instance; } }
在以上代碼中,懶漢模式是在第一次調用getInstance()方法時創建實例對象,而餓漢模式則是在類加載時就創建實例對象。
需要注意的是,懶漢模式在多線程下可能會出現線程安全問題,可以通過加鎖解決,但會降低效率。而餓漢模式的實例對象一旦創建就不會發生變化,因此是線程安全的。
總的來說,懶漢模式適用于單線程環境下,或是對于get()方法并不頻繁使用的情況。而餓漢模式適用于多線程環境下,或是對于get()方法頻繁使用的情況。