雙重校驗鎖實現單例模式(對象單例,線程安全)

雙重校驗鎖實現單例模式:

創新互聯公司是一家專注于網站設計制作、成都做網站與策劃設計,解放網站建設哪家好?創新互聯公司做網站,專注于網站建設10余年,網設計領域的專業建站公司;建站業務涵蓋:解放等地區。解放做網站價格咨詢:028-86922220

public class Singleton {

    //采用volatile修飾
    private volatile static Singleton singleton;

    //構造方法私有化
    private Singleton(){}

    //雙重校驗鎖
    public static Singleton getInstance(){
        //先判斷對象是否已經實例過,沒有實例化過才進入加鎖代碼
        if(singleton == null){
            //類對象加鎖
            synchronized(Singleton.class){
                //再次判斷
                if (singleton == null){
                    singleton = new Singleton();
                }
            }
        }
        return singleton;
    }
}

注意:singleton 采用 volatile 修飾是很有必要的,因為 singleton = new Singleton() 這句話可以分為三步:

  1. 為 singleton 分配內存空間;
  2. 初始化 singleton;
  3. 將 singleton 指向分配的內存空間。
    但是由于JVM具有指令重排的特性,執行順序有可能變成 1-3-2。 指令重排在單線程下不會出現問題,但是在多線程下會導致一個線程獲得一個未初始化的實例。例如:線程T1執行了1和3,此時T2調用 getInstance() 后發現 singleton 不為空,因此返回 singleton, 但是此時的 singleton 還沒有被初始化。
    使用 volatile 會禁止JVM指令重排,從而保證在多線程下也能正常執行

當前題目:雙重校驗鎖實現單例模式(對象單例,線程安全)
網站URL:http://m.kartarina.com/article2/ppheic.html

成都網站建設公司_創新互聯,為您提供網站制作面包屑導航營銷型網站建設網站營銷、軟件開發、域名注冊

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都定制網站建設
主站蜘蛛池模板: 精品无码专区亚洲| 成年轻人电影www无码| 亚洲av无码专区在线观看素人| 精品无码久久久久久久久久| 亚洲午夜无码久久久久| 国产亚洲3p无码一区二区| 久久精品aⅴ无码中文字字幕重口 久久精品国产亚洲AV无码娇色 | 日日摸日日碰人妻无码| 久久久无码精品亚洲日韩软件| 国产成人无码一区二区在线观看| 日韩一区二区三区无码影院| 无码中文人妻在线一区二区三区| 无码一区二区三区AV免费| 精品无码综合一区| 亚洲中文字幕无码mv| 亚洲Av永久无码精品三区在线| 亚洲AV成人无码久久WWW| 亚洲精品无码久久一线| 精品人妻无码一区二区三区蜜桃一 | 中文字幕丰满伦子无码| 伊人久久一区二区三区无码| 日本爆乳j罩杯无码视频| 久久久久久久久无码精品亚洲日韩| 国产亚洲美日韩AV中文字幕无码成人 | 亚洲一区AV无码少妇电影| av无码精品一区二区三区四区| AV无码精品一区二区三区| 精品亚洲成α人无码成α在线观看 | 亚洲AV无码成人专区片在线观看 | 国产精品无码av在线播放| 国产精品爆乳奶水无码视频| 久久久久亚洲Av无码专| 亚洲AV综合色区无码一区爱AV | 久久久久久亚洲av无码蜜芽| 亚洲精品偷拍无码不卡av| 九九久久精品无码专区| 免费无码av片在线观看| 亚洲国产精品无码久久九九 | 精品成在人线AV无码免费看| 久久久无码一区二区三区 | 亚洲AV永久青草无码精品|