Java中的懶漢模式和餓漢模式都是單例模式的兩種實現方式,都可以保證只生成一個實例對象。
懶漢模式指的是在第一次使用時才會生成實例對象,而不是在程序啟動時就生成實例對象。這樣能夠節省系統資源,但是需要注意線程安全問題。
public class Singleton { private static Singleton instance; private Singleton() {} public static synchronized Singleton getInstance() { if (instance == null) { instance = new Singleton(); } return instance; } }
以上就是懶漢模式的實現方式。需要注意的是,如果多個線程同時調用getInstance()方法,可能會出現多個實例對象的情況,所以需要加鎖保證線程安全。
相比之下,餓漢模式則是在程序啟動時就生成實例對象,在整個程序的生命周期內只有一個實例對象,這樣能夠保證線程安全,但是會占用一定的系統資源。
public class Singleton { private static Singleton instance = new Singleton(); private Singleton() {} public static Singleton getInstance() { return instance; } }
以上就是餓漢模式的實現方式,非常簡單明了。
綜上所述,選擇使用哪種單例模式取決于實際情況,如果希望節省系統資源并可以解決線程安全問題,可以使用懶漢模式;如果不考慮系統資源問題,希望保證線程安全,可以使用餓漢模式。