我覺得不考慮多線程的話,這里的懶漢模式已經(jīng)足夠。加 synchronized 也不是唯一的做lazy init 的方式。
2014-12-03
線程不安全是因為,沒有在懶漢模式那里加一個同步塊,而且沒有加同步塊和再加一個判斷的話,這里的懶漢模式并不是真正意義上的單例模式~~
2014-11-25
最贊回答 / jamesdeath123
如果兩個線程 threadA和 threadB分別開始執(zhí)行初始化:threadA: if (instance == null) 是真,然后進(jìn)入條件區(qū)里面里面,在它還沒有到初始化那一步的時候,跳到 threadB:這時(instance==null)對threadB仍然是真,于是也進(jìn)入到條件區(qū)里面。接下來 threadA和threadB接下來先后執(zhí)行instance = new ... 就會分別給兩個線程兩個不同的instance了。
2014-10-31