Java中的單例模式是一種操作非常常見的設(shè)計(jì)模式,它可以保證在整個應(yīng)用系統(tǒng)中只存在一個實(shí)例對象,從而確保了系統(tǒng)的性能和安全。其中,懶漢模式和惡漢模式是兩種實(shí)現(xiàn)單例模式的方式,下面我們來詳細(xì)了解一下這兩種模式的特點(diǎn)。
懶漢模式:
public class Singleton { private static Singleton instance = null; private Singleton() {} public static synchronized Singleton getInstance() { if(instance == null) { instance = new Singleton(); } return instance; } }
懶漢模式的特點(diǎn)在于只有當(dāng)程序第一次調(diào)用getInstance方法時,才會創(chuàng)建實(shí)例對象。如果在多線程環(huán)境下,可能會導(dǎo)致出現(xiàn)多個實(shí)例對象,因此需要在getInstance方法上加上synchronized關(guān)鍵字進(jìn)行同步,從而保證線程安全。
惡漢模式:
public class Singleton { private static final Singleton instance = new Singleton(); private Singleton() {} public static Singleton getInstance() { return instance; } }
惡漢模式的特點(diǎn)是在類被加載時就會創(chuàng)建實(shí)例對象,并將其聲明為final類型,從而保證了線程安全。雖然這種方式消耗了更多的系統(tǒng)資源,但是在多線程環(huán)境下也沒有線程安全的問題,因此在實(shí)際應(yīng)用中,惡漢模式更為常見。