在 Java 編程中,單例模式是一種非常常用的設計模式。在單例模式中,一個類只允許被實例化一次,從而保證在整個系統運行周期內,只會有一個對象被創建。目前,Java 中主要有懶漢和飽漢兩種生成單例模式的方式。
懶漢指的是在需要實例化對象時才去創建。這種模式的優點在于節省了系統資源,但在并發程度高的場景下,可能會引起線程安全的問題。為了解決這個問題,可以使用雙重檢驗鎖實現:
public class LazySingleton { private volatile static LazySingleton singleton; private LazySingleton() {} public static LazySingleton getInstance() { if (singleton == null) { synchronized (LazySingleton.class) { if (singleton == null) { singleton = new LazySingleton(); } } } return singleton; } }
飽漢指的是在類加載的時候就創建實例。這種模式的優點在于線程安全,但會浪費系統資源。一個常見的實現例子是:
public class EagerSingleton { private static final EagerSingleton singleton = new EagerSingleton(); private EagerSingleton() {} public static EagerSingleton getInstance() { return singleton; } }
以上是關于 Java 懶漢和飽漢單例模式的簡單介紹。在實際編程中,需要根據自己的需求進行選擇。如果系統資源有限而并發度不高,可以選擇懶漢模式;如果系統資源較為充足而需要保證線程安全,就可以選擇飽漢模式。