導航:首頁 > 編程語言 > java雙重檢查鎖

java雙重檢查鎖

發布時間:2024-07-28 23:27:01

java單例雙重檢查鎖為什麼需要加volatile關鍵字

已經修改,的確應該加上volatile關鍵字。不加的情況下,假設兩個線程,線程A正在執行instance = new Instance()的操作,而線程B開始執行if(instance==null)的判斷,當不存在volatile的時候,因為 new Instance()是一個非原子操作,可能發生無序寫入,構造函數可能在整個對象構造完成前執行完畢,線程B可能會看到一個不完整的instance對象,因為java的某些實現會在內存中開辟一片存儲對象的區域後直接返回內存的引用,所以線程B判斷不為null,而這時候實際上,instance的構造函數還沒有執行,從而線程b得到不完整的對象。在 Instance 的構造函數執行之前,會在內存中開辟一片存儲對象的區域後直接返回內存的引用,賦值給變數 instance,instance也就可能成為非 null 的,即賦值語句在對象實例化之前調用,此時別的線程得到的是一個還會初始化的對象,這樣會導致系統崩潰線程B可能會看到一個不完整的instance對象,因為java的某些實現,所以線程B判斷不為null。從而得到不完整的對象。

閱讀全文

與java雙重檢查鎖相關的資料

熱點內容
哪個app上民宿多靠譜 瀏覽:825
重慶伺服器租用哪裡有雲伺服器 瀏覽:453
土星模擬器文件夾 瀏覽:902
文件夾文件袋文件盒 瀏覽:695
雲伺服器打開f8指令 瀏覽:243
盈透證券加密幣 瀏覽:72
阿里雲伺服器初始密碼怎麼修改 瀏覽:266
伺服器怎麼設定公用網路 瀏覽:99
程序員自己嘗尿檢測出糖尿病 瀏覽:593
列印添加pdf 瀏覽:932
蘋果解壓專家賬號 瀏覽:842
度曉曉app為什麼關閑 瀏覽:228
net文件是偽編解碼嗎 瀏覽:149
伴隨矩陣的matlab編程 瀏覽:63
單片機和h橋是什麼意思 瀏覽:314
51單片機光控設計論文 瀏覽:653
渦旋式壓縮機無油 瀏覽:731
企業網搭建及應用pdf 瀏覽:744
symanteclinux 瀏覽:879
程序員朋友化妝改造 瀏覽:493