雙重校驗(yàn)鎖實(shí)現(xiàn)單例模式:
創(chuàng)新互聯(lián)公司是一家專注于網(wǎng)站設(shè)計(jì)制作、成都做網(wǎng)站與策劃設(shè)計(jì),解放網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)10余年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:解放等地區(qū)。解放做網(wǎng)站價(jià)格咨詢:028-86922220
public class Singleton {
//采用volatile修飾
private volatile static Singleton singleton;
//構(gòu)造方法私有化
private Singleton(){}
//雙重校驗(yàn)鎖
public static Singleton getInstance(){
//先判斷對(duì)象是否已經(jīng)實(shí)例過(guò),沒(méi)有實(shí)例化過(guò)才進(jìn)入加鎖代碼
if(singleton == null){
//類對(duì)象加鎖
synchronized(Singleton.class){
//再次判斷
if (singleton == null){
singleton = new Singleton();
}
}
}
return singleton;
}
}
注意:singleton 采用 volatile 修飾是很有必要的,因?yàn)?singleton = new Singleton() 這句話可以分為三步: