出于线程安全的原因,有人提出以下论点:
在构造过程中,请勿使该引用散逸。
但这总是一个问题,应该使用newInstance()
方法避免吗?在我的模型类中,我有一个TableModel,应该在模型类中实例化它,但是它还需要引用模型类:
public class MainModel {
TableModel tableMode;
public MainModel() {
tableModel = new MyTableModel(this);
}
}
如果构造方法不立即使用此方法,那么它是安全的还是应该以任何方式避免使用?
最佳答案
如果MyTableModel
中的任何内容都不会在其他线程等中做任何事情-或将变量复制到其他共享数据(例如静态变量),那么这是安全的。
当然,如果MyTableModel
开始在其构造函数内的MainModel
引用上调用方法,则它将在尚未完全初始化的对象上调用它们,这可能会引起问题-但这与线程无关。
我blogged a bit more on this前一阵子。