This 引用逃逸
在Java 并发编程书里有个例子程序清单3-7 谈到 this escape。 开始没有想明白, 仔细琢磨了些时间发现代码主要的问题是在建构函数中创建了一个匿名类,然后发布了这个匿名类。?
?
class ThisEscape$1 implements EventListener { final ThisEscape this$0; ThisEscape$1(ThisEscape thisescape) { this$0 = thisescape; super(); } public void onEvent(Event e) { ThisEscape.access$000(this$0, e); }}?
这样如果?new ThisEscape$1(this) 在另外的线程中被执行的话, 就可能导致 逃逸出去的this 的 num ?还没有 执行?num = 42; ??Race condition detected 会不时的显示在console 里面。
?
结论 ?1, 就是不要在 建构函数随便创建匿名类然后 发布它们。
? ? ? ? 2, ?不用再建构函数中随便起线程, 如果起要看有没有发布匿名类对象。