作者coolcomm (coolcomm)
看板Programming
标题Fw: [问题] 想请问一段多执行绪的程式码
时间Tue Feb 5 19:37:08 2013
※ [本文转录自 java 看板 #1H0J_st5 ]
作者: coolcomm (coolcomm) 看板: java
标题: [问题] 想请问一段多执行绪的程式码
时间: Thu Jan 24 22:06:44 2013
以下程式码节录自org.apache.commons.lang3.builder.HashCodeBuilder
private static final ThreadLocal<Set<IDKey>> REGISTRY = new ThreadLocal<>();
static void register(Object value) {
synchronized(HashCodeBuilder.class) {
if (getRegistry() == null) { REGISTRY.set(new HashSet<IDKey>()); }
}
getRegistry().add(new IDKey(value));
}
想请问
ThreadLocal不是thread-safe吗 为甚麽还要加上synchronized关键字?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 1.163.82.56
另外 synchronized(HashCodeBuilder.class) 有什麽特别含意吗
为什麽不直接写 synchronized(this)...
※ 编辑: coolcomm 来自: 1.163.82.56 (01/24 22:12)
1F:→ tkcn:因为 register 是 static method,没有 this 01/24 22:24
3F:→ coolcomm:所以和static void synchronized register完全一样罗? 01/24 22:29
4F:→ tkcn:是,但你上面的例子还有个 getRegistry 在外面,所以不同 01/24 23:16
5F:→ coolcomm:嗯 这部分了解了 01/24 23:21
※ 编辑: coolcomm 来自: 1.163.82.56 (01/24 23:24)
6F:→ n3oanderson:This is check then act scenario, which is not 01/26 15:37
7F:→ n3oanderson:thred safe. 01/26 15:39
囧 我发现我忘了贴getRegistry()的定义
static Set<IDKey> getRegistry() { return REGISTRY.get(); }
就这样一行
※ 编辑: coolcomm 来自: 36.224.126.155 (02/05 19:37)
8F:→ coolcomm:有人能提供其他答案吗? 36.224.126.155 02/05 19:37
9F:推 kingstong:所以说你看这种程式码不会看到起疯吗?! 1.170.140.103 02/06 15:07
10F:推 kingstong:要是跑不动要怎麽DEBUG?!我可能会把电脑 1.170.140.103 02/06 15:10
11F:→ kingstong:砸了,反正编译器那麽多种不必要一定得用 1.170.140.103 02/06 15:11
12F:→ kingstong:哪一种 1.170.140.103 02/06 15:11
13F:→ coolcomm:楼上又在干嘛啦= = 1.163.86.92 02/06 18:15
14F:→ coolcomm:我猜楼上应该是不懂物件导向吧 所以才会 1.163.86.92 02/06 18:48
15F:→ coolcomm:觉得Java语法难懂 1.163.86.92 02/06 18:48
16F:→ coolcomm:虽然Java语法出了名的罗嗦 但其实非常好读 1.163.86.92 02/06 18:50
17F:→ azureblaze:c大你跟他认真了你输了 1.171.51.129 02/06 18:54
18F:→ coolcomm:= = 1.163.86.92 02/06 19:00
19F:推 kingstong:C\C++不就最早的物件导向的始祖吗?! 1.170.140.103 02/06 20:15
20F:→ kingstong:不过我承认我位够班,不过学了一堆理论 1.170.140.103 02/06 20:16
21F:→ kingstong:却不会任何一种程式语言也是没用 1.170.140.103 02/06 20:17
22F:→ kingstong:就像台大哲学和交大资工,你会选哪一个?! 1.170.140.103 02/06 20:19
23F:推 kingstong:还有你们认识施振荣和施崇棠吗?!你们比 1.170.140.103 02/06 20:22
24F:→ kingstong:他们强吗?! 1.170.140.103 02/06 20:23
※ 编辑: coolcomm 来自: 1.163.86.92 (02/06 20:46)
25F:推 LaPass:看不懂K的重点是什麽.....111.252.124.183 02/06 21:51
26F:→ vocaloid:视为杂讯略过 180.176.98.183 02/06 22:01
27F:推 dryman:C是物件导向的始祖?我笑了XD 68.181.5.30 02/07 13:04
28F:推 kingstong:楼上,你那麽厉害的话麻烦用一台没灌任何 111.246.51.197 02/07 15:35
29F:→ kingstong:作业系统的电脑,然後灌DOS,在DOS的环境 111.246.51.197 02/07 15:36
30F:→ kingstong:下写一套倚天中文系统的ET系列的可显示 111.246.51.197 02/07 15:38
31F:→ kingstong:中文字的系统,在写CW系列的文书处理程式 111.246.51.197 02/07 15:39
32F:→ kingstong:或是PE2也行,还是用COBOL来写商用文书处 111.246.51.197 02/07 15:40
33F:→ kingstong:理系统,如果你会我就让你捅屁眼 111.246.51.197 02/07 15:41
34F:推 purpose:C++ 的物件导向是从 Simula 语言来的 124.8.134.217 02/07 16:06
35F:→ azureblaze:真正的高手灌什麽dos 用蝴蝶就够了 1.171.48.45 02/07 16:12
36F:→ coolcomm:先别管king了 有没有人能回答我原本的问题啦=3= 02/07 16:29
※ 编辑: coolcomm 来自: 1.163.82.9 (02/07 16:31)
37F:推 kingstong:PURPOSE你很谦虚啊!给你一个推 36.233.230.174 02/07 16:33
38F:→ maerdimer:屁精请不要乱入 111.252.70.168 02/07 21:18
39F:推 kingstong:我的屁比你的嘴还香勒 1.170.144.19 02/07 22:11
40F:推 kingstong:我知道我才疏学浅,不过我的精神就是不屈 1.170.144.19 02/07 22:18
41F:→ kingstong:不饶,我看过版主的发言,这个版想必在成 1.170.144.19 02/07 22:19
42F:→ kingstong:立时炮火连连,就像是宇宙大爆炸,混屯初 1.170.144.19 02/07 22:20
43F:→ kingstong:开,然後应该有人被桶进精神病院 1.170.144.19 02/07 22:21
44F:→ kingstong:不过程式这东西还是化繁为简的好 1.170.144.19 02/07 22:21
45F:→ kingstong:不知道这版有没有人问候别人的老木?! 1.170.144.19 02/07 22:23
46F:→ suhorng:如果你是来跟别人讨论而不是乱放话混乱版 118.166.45.233 02/07 22:39
47F:→ suhorng:面就会有人讨论了啊@@ 118.166.45.233 02/07 22:39
48F:推 dryman:请把不屈不挠的精神拿去读点书,加油,好吗 68.181.5.30 02/08 07:04
49F:→ yauhh:不屈不挠精神放在嘴上,不太好.歇会儿吧 118.167.53.24 02/08 16:49