色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

java懶漢和餓漢區(qū)別

劉柏宏1年前7瀏覽0評論

Java中的懶漢和餓漢是兩種單例模式的實(shí)現(xiàn)方式。單例模式是指一個(gè)類只被允許創(chuàng)建一個(gè)實(shí)例,這種設(shè)計(jì)模式在很多場景下是非常有用的。

餓漢模式相對比較簡單,它的內(nèi)部靜態(tài)成員變量是在類加載時(shí)就已經(jīng)實(shí)例化了。這樣的話,每次使用都可以直接返回這個(gè)實(shí)例。代碼實(shí)現(xiàn)如下:

public class SingletonHungry {
private static final SingletonHungry instance = new SingletonHungry();
// 禁止實(shí)例化
private SingletonHungry() {}
public static SingletonHungry getInstance() {
return instance;
}
}

懶漢模式的實(shí)現(xiàn)稍微復(fù)雜一些。它的內(nèi)部靜態(tài)成員變量是在第一次使用時(shí)才實(shí)例化的。這樣做的好處是可以延遲實(shí)例化,只在需要時(shí)才創(chuàng)建對象。但是需要注意并發(fā)情況下的線程安全問題。代碼實(shí)現(xiàn)如下:

public class SingletonLazy {
private static SingletonLazy instance;
// 禁止實(shí)例化
private SingletonLazy() {}
public static synchronized SingletonLazy getInstance() {
if (instance == null) {
instance = new SingletonLazy();
}
return instance;
}
}

需要注意的是,如果在多線程的情況下,可能會(huì)出現(xiàn)多個(gè)線程同時(shí)進(jìn)行判斷,從而創(chuàng)建出多個(gè)實(shí)例的情況。解決方法有多種,可以使用雙重校驗(yàn)鎖、靜態(tài)內(nèi)部類、枚舉等方式保證線程安全。