看板 Soft_Job 關於我們 聯絡資訊
※ 引述《Harifucks (就是要戰腦殘保險業務)》之銘言: : : 以java的角度來看就是 用太多singleton pattern 又沒做好thread protected : : 導致production上大量交易時會有dirty read情況 : : 後來其他模組也出現類似問題 : : 我只能說一個簡單的 singleton pattern 亂用 也會搞砸整鍋粥 : : 該系統在全世界不知道賣給多少家客戶了 竟然還會如此不重視此問題 : : 所以外來的和尚有好的也又壞的啦 大家都是人啦 : : 對不起,既然R大提到singleton pattern,那順便請問技術問題。 : 對於singleton pattern的存取,不是用static synchronized就可以解決了嗎? : 還有什麼應該注意的,謝謝指導! synchronized不是萬能,像是底下的code就不是thread safe... class CustomerInfoFactory { private static HashMap cMap = null; public static synchronized Map getInstance(){ if( cMap == null ) cMap = new HashMap(); return Map; } } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 24.18.234.113
redray:為什麼這不是 thread-safe? 06/09 11:17
opman:是不是打錯了,好像應該是 return cMap; 06/09 11:52
kimkao:這應該只是保證Single instance吧? 06/09 12:25
kimkao:這樣並不會是thread-safe,因為return的map,可以被修改 06/09 12:53
chihyi1980:嗯, 這樣最後return 的cMap就pass by reference了.. 06/09 13:32
ritchieHsu:這樣寫的目的不就是要讓cMap眾人用呀 幹麻要safe呀 @@ 06/09 23:43
redray:我知道 map 不是 thread-safe,但是上面那段 code 是 thread 06/10 01:33
redray:-safe,應該要精確一點來說明,我原本以為上面那段 code 本 06/10 01:34
redray:身不是 thread-safe,就像是 double-checked locking 的情況 06/10 01:35