Re: [討論]國外軟體工程師與台灣的差別

看板Soft_Job作者 (@Seattle)時間16年前 (2008/06/09 04:28), 編輯推噓7(702)
留言9則, 5人參與, 最新討論串9/21 (看更多)
※ 引述《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

06/09 11:17, , 1F
為什麼這不是 thread-safe?
06/09 11:17, 1F

06/09 11:52, , 2F
是不是打錯了,好像應該是 return cMap;
06/09 11:52, 2F

06/09 12:25, , 3F
這應該只是保證Single instance吧?
06/09 12:25, 3F

06/09 12:53, , 4F
這樣並不會是thread-safe,因為return的map,可以被修改
06/09 12:53, 4F

06/09 13:32, , 5F
嗯, 這樣最後return 的cMap就pass by reference了..
06/09 13:32, 5F

06/09 23:43, , 6F
這樣寫的目的不就是要讓cMap眾人用呀 幹麻要safe呀 @@
06/09 23:43, 6F

06/10 01:33, , 7F
我知道 map 不是 thread-safe,但是上面那段 code 是 thread
06/10 01:33, 7F

06/10 01:34, , 8F
-safe,應該要精確一點來說明,我原本以為上面那段 code 本
06/10 01:34, 8F

06/10 01:35, , 9F
身不是 thread-safe,就像是 double-checked locking 的情況
06/10 01:35, 9F
文章代碼(AID): #18J43lqp (Soft_Job)
討論串 (同標題文章)
本文引述了以下文章的的內容:
以下文章回應了本文
完整討論串 (本文為第 9 之 21 篇):
文章代碼(AID): #18J43lqp (Soft_Job)