在Java中,單例模式是一種經常被使用的設計模式,可以確保只有一個類的實例存在。其中,餓漢模式和懶漢模式是最常用的兩種單例模式。
餓漢模式:
public class Singleton { private static Singleton instance = new Singleton(); private Singleton() {} public static Singleton getInstance() { return instance; } }
餓漢模式在類加載時就會創建實例,當需要使用時就直接返回實例,具有線程安全的特性。但是,如果實例一開始就創建了,但是不一定每個場景都需要使用單例,此時餓漢模式就會占用內存空間。
懶漢模式:
public class Singleton { private static Singleton instance = null; private Singleton() {} public synchronized static Singleton getInstance() { if (instance == null) { instance = new Singleton(); } return instance; } }
相對于餓漢模式,懶漢模式可以延遲單例對象的創建,當需要使用時再創建單例,避免了不必要的內存占用。但是,懶漢模式在多線程環境下可能存在線程安全問題,需要加入synchronized關鍵字進行同步處理。