以單例模式為例,在Idea中多執行緒debug 阿新 • • 發佈:2018-12-13 我們以單例模式的懶漢式在idea中進行多執行緒debug 一是可以學習多執行緒debug,二是可以瞭解懶漢式的執行緒不安全的原因 首先我們建立一個單例懶漢式,然後建立兩個執行緒 程式碼如下: 然後 進行多執行緒debug,來干預懶漢式的執行順序 首先我們應該在idea中開啟多執行緒debug模式: 在斷點上點選右鍵,出現下圖 選擇Thread模式,即該斷點為多執行緒debug,每個斷點都要開啟 開啟後,我們執行debug 首先會執行Main執行緒, 然後我們在debug視窗中選擇執行緒: 點選圖中箭頭指向的 下拉框選擇執行緒: 我們首先選擇執行緒0: 然後單步執行(F8) ,出現下圖,此時進入了if判斷例項是否為空 點選下一步出現下圖: 現在我們切換到另一個執行緒: 點選下一步 ,執行緒2進入 if判斷 點選下一步,進入 例項,但是注意:此時還沒有例項賦值 此時我們再切換到 執行緒1上,點選下一步 點選下一步後,如下圖所示,此時執行緒1已經獲得 了例項 @506 此時 再切換到執行緒2上:此時發現執行緒2的例項也變為了 執行緒1中的例項 @506 接著我們再執行緒2中 點選下一步 進行例項化,此時發現,執行緒2中也進行了例項化,例項化為@507 我們再切換到 執行緒1上觀察,發現執行緒1也從@506變為了@507 最後 兩個執行緒都返回 @507這個例項 結論: 有時候我們使用單例獲取兩個例項,表面上列印的是同一個物件,其實可能是建立了2個物件,然後第二個物件將第一個物件覆蓋了,造成了假象。