【发布时间】:2013-05-08 06:03:19
【问题描述】:
不确定这个 D 类线程是否正确。是否存在竞争条件,i 在访问时是否应该在同步块中?如果 D 是外部类,并且 A 实例被传递给 D 构造函数怎么办?
class A
{
int i;
void f() {
i++;
D d = new D();
d.start();
}
class D extends Thread {
public void run() {
int g = i;
}
}
}
【问题讨论】:
-
完全不相关,因为其他人似乎已经涵盖了您,但扩展
Thread被认为是不好的做法。 -
Google 开发人员一直在 android 示例代码中这样做!
-
这是better approach。这样你就不会发现自己意外地覆盖了一些东西,也不会携带很多你不需要的额外记忆包袱。
-
按原样,完全没有问题。在启动线程之前增加
i,并且根本没有线程修改i。
标签: java multithreading java.util.concurrent