在Java中,可以使用雙重檢查鎖定(Double-Checked Locking)實現(xiàn)懶加載。雙重檢查鎖定是一種線程安全的懶加載方式,可以在多線程環(huán)境下保證只有第一次訪問時才會進(jìn)行實例化操作。
public class LazyLoading {
private static volatile LazyLoading instance;
private LazyLoading() {
}
public static LazyLoading getInstance() {
if (instance == null) {
synchronized (LazyLoading.class) {
if (instance == null) {
instance = new LazyLoading();
}
}
}
return instance;
}
}
在上面的代碼中,使用了雙重檢查鎖定來實現(xiàn)懶加載。首先檢查實例是否已經(jīng)被實例化,如果沒有,則進(jìn)入同步塊進(jìn)行實例化操作。在同步塊內(nèi)部再次檢查實例是否被實例化,以確保在多線程環(huán)境下只有一個線程能夠進(jìn)行實例化操作。同時,需要將instance聲明為volatile類型,以確保線程之間的可見性。