Soft_Job 板


LINE

※ 引述《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
1F:推 Harifucks:那原程式要怎麽修改才能变成Thread-Safe? 06/09 23:38
2F:推 laxw:Google "how to kill singleton" 06/10 00:15
3F:推 opman:这种专教 thread 的章节,应该都会提, 06/10 09:37
4F:→ opman:不同语言会有不同语法,但大约都是那几种 06/10 09:38
5F:→ opman:基本上不是 singleton 有问题, 06/10 09:39
6F:→ opman:而是写 thread 的人,对 thread 不熟,才会误用都不知道. 06/10 09:39
7F:→ opman:这年头,懒得买书来看的,好像越来越多. 06/10 09:41
8F:→ opman:应该是说懒得看书啦. 图书馆有免费的,经典书籍通常会有. 06/10 09:41
9F:→ opman:有的连 网路搜寻都很少在用. 06/10 09:43
10F:推 tangblack:我没记错的话! Thread 不是要用 start() 来开始? 06/10 12:44
11F:→ kimkao:看一下这个api说明吧 06/11 09:26
12F:→ kimkao: Causes this thread to begin execution; 06/11 09:26
13F:→ kimkao:the Java Virtual Machine calls the run method of 06/11 09:26
14F:→ kimkao:this thread. 06/11 09:27
15F:推 tangblack:我想表达的是 06/11 13:12
16F:→ tangblack:若直到呼叫run(),就变成单纯呼叫物件上的方法. 06/11 13:13
17F:→ tangblack:而不是多线程(Thread)的并行行为. 06/11 13:14
18F:→ tangblack:而是楼主本来就只想要建立两个物件然後轮流呼叫 06/11 13:15
19F:→ tangblack:它们的run(). 06/11 13:15
20F:→ tangblack:所以上述main的程式码我看到的次序 06/11 13:16
21F:→ tangblack:应该永远是 t1.run()->t2.run()->t1.run() 06/11 13:17
22F:→ tangblack:依序执行 而非 多线程的执行方式. 06/11 13:18
23F:推 tangblack:关於楼主回覆API中说明文字: 06/11 13:27
24F:→ tangblack:我认为应该是指 多线程要透过 start()呼叫run()来启动! 06/11 13:28
25F:→ tangblack:而start()也只能被呼叫一次! 否则会发生执行期错误! 06/11 13:29
26F:→ tangblack:不知这样解释是否有让楼主知道我在问什麽? 06/11 13:30
27F:→ tangblack:我想知道楼主直接呼叫run()的理由! 06/11 13:31
28F:→ tangblack:是误用? 06/11 13:32
29F:→ tangblack:还是要解释ThreadSafe行为?(若是此情况我就看不懂code) 06/11 13:32
30F:→ kimkao:多谢tangblack说明,其实我上述的api说明原本只是要说 06/11 13:42
31F:→ kimkao:start()会呼叫run()而已,但确实是真的应该要用start()才能 06/11 13:43
32F:→ kimkao:真正达成多线程处理..感谢指正! 06/11 13:44
※ 编辑: kimkao 来自: 61.221.67.235 (06/11 13:46)
33F:→ kimkao:另外!我引述的确实不能完整说明ThreadSafe..可以砍这篇了 06/11 14:50
34F:推 tangblack:感谢楼主回覆!我跑回去翻书也算是复习忘记的东西!:) 06/11 15:07







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Tech_Job站内搜寻

TOP