private static Callback callback;
public Foo()
{
super(getCallback());
}
private static Callback getCallback()
{
callback = new Callback();
return callback;
}
构造函数 Foo() 可能会从多个线程中调用。我关心的是私有静态字段“callback”和静态方法“getCallback()”。
可以看出,每次调用“getCallback()”时,都会为静态字段“回调”分配一个新值。
我的猜测是它不是线程安全的,因为关键字static总是附加到类而不是实例上,这意味着 Foo 的静态字段“回调”可能会被构造另一个 Foo() 的其他线程覆盖. 它是否正确?
如果我错了,请纠正我。谢谢!
编辑:我的目的是在课堂上的某个地方保留“回调”,以便以后可以重用它。但这并不容易,因为 Foo 从一个类扩展而来,该类具有强制传递“回调”的构造函数。