Re: [討論]國外軟體工程師與台灣的差別
※ 引述《HYL (@Seattle)》之銘言:
: ※ 引述《Harifucks (就是要戰腦殘保險業務)》之銘言:
: : 對不起,既然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;
: }
: }
嘗試引述一下個人認為不是thread-safe的想法..
照上面的code來看假設是想要提供一個
"Single instance to serve Multi threads."
import java.util.Map;
public class Th1 extends Thread {
private Map m;
public Th1(Map m){
this.m=m;
}
public void run(){
System.out.println("@Th1 ... s is :" + (String)m.get("s"));
}
}
public class Th2 extends Thread {
private Map m;
public Th2(Map m){
m.put("s", "hello2");
this.m=m;
}
public void run(){
System.out.println("@Th2 ... s is :" + (String)m.get("s"));
}
}
public class Cool {
public static void main(String[] args) {
Map m = CustomerInfoFactory.getInstance();
m.put("s", "hello1");
Thread t1 = new Th1(m);
//t1.run();
t1.start();
Thread t2 = new Th2(m);
t2.start();
// t1.run();
}
}
====================================
根據上述的測試結果如下
@Th1 ... s is :hello1
@Th2 ... s is :hello2
@Th1 ... s is :hello2
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 60.250.111.46
推
06/09 23:38, , 1F
06/09 23:38, 1F
推
06/10 00:15, , 2F
06/10 00:15, 2F
推
06/10 09:37, , 3F
06/10 09:37, 3F
→
06/10 09:38, , 4F
06/10 09:38, 4F
→
06/10 09:39, , 5F
06/10 09:39, 5F
→
06/10 09:39, , 6F
06/10 09:39, 6F
→
06/10 09:41, , 7F
06/10 09:41, 7F
→
06/10 09:41, , 8F
06/10 09:41, 8F
→
06/10 09:43, , 9F
06/10 09:43, 9F
推
06/10 12:44, , 10F
06/10 12:44, 10F
→
06/11 09:26, , 11F
06/11 09:26, 11F
→
06/11 09:26, , 12F
06/11 09:26, 12F
→
06/11 09:26, , 13F
06/11 09:26, 13F
→
06/11 09:27, , 14F
06/11 09:27, 14F
推
06/11 13:12, , 15F
06/11 13:12, 15F
→
06/11 13:13, , 16F
06/11 13:13, 16F
→
06/11 13:14, , 17F
06/11 13:14, 17F
→
06/11 13:15, , 18F
06/11 13:15, 18F
→
06/11 13:15, , 19F
06/11 13:15, 19F
→
06/11 13:16, , 20F
06/11 13:16, 20F
→
06/11 13:17, , 21F
06/11 13:17, 21F
→
06/11 13:18, , 22F
06/11 13:18, 22F
推
06/11 13:27, , 23F
06/11 13:27, 23F
→
06/11 13:28, , 24F
06/11 13:28, 24F
→
06/11 13:29, , 25F
06/11 13:29, 25F
→
06/11 13:30, , 26F
06/11 13:30, 26F
→
06/11 13:31, , 27F
06/11 13:31, 27F
→
06/11 13:32, , 28F
06/11 13:32, 28F
→
06/11 13:32, , 29F
06/11 13:32, 29F
→
06/11 13:42, , 30F
06/11 13:42, 30F
→
06/11 13:43, , 31F
06/11 13:43, 31F
→
06/11 13:44, , 32F
06/11 13:44, 32F
※ 編輯: kimkao 來自: 61.221.67.235 (06/11 13:46)
→
06/11 14:50, , 33F
06/11 14:50, 33F
推
06/11 15:07, , 34F
06/11 15:07, 34F
討論串 (同標題文章)