private static Callback callback;
public Foo()
{
super(getCallback());
}
private static Callback getCallback()
{
callback = new Callback();
return callback;
}
构造函数Foo()可能会被多个线程调用。我关心的是私有静态字段'callback'和静态方法'getCallback()'。帮忙查看下面的代码,线程安全吗?
如可以看到的,每一次“getCallback()”被调用时,它分配一个新的值,以静态字段“回调”。
我猜测是,它不是线程安全的,因为关键字静态始终附加到类而不是实例,这样就意味着,一个Foo的静态字段“回调”有可能被其他覆盖正在构造另一个Foo()的线程。它是否正确?
如果我错了,请纠正我。谢谢!
编辑:我的意图是保持'回调'在类的某个地方,所以我可以在以后重复使用。但是这并不容易,因为Foo从一个具有构造函数的类中继承,该类需要传递'callback'。
好问题。这些问题很难通过自己逻辑思考。 – 2009-06-01 09:53:21