出于线程安全的原因,有人提出以下论点:


在构造过程中,请勿使该引用散逸。


但这总是一个问题,应该使用newInstance()方法避免吗?在我的模型类中,我有一个TableModel,应该在模型类中实例化它,但是它还需要引用模型类:

public class MainModel {

   TableModel tableMode;

   public MainModel() {
      tableModel = new MyTableModel(this);
   }
}


如果构造方法不立即使用此方法,那么它是安全的还是应该以任何方式避免使用?

最佳答案

如果MyTableModel中的任何内容都不会在其他线程等中做任何事情-或将变量复制到其他共享数据(例如静态变量),那么这是安全的。

当然,如果MyTableModel开始在其构造函数内的MainModel引用上调用方法,则它将在尚未完全初始化的对象上调用它们,这可能会引起问题-但这与线程无关。

blogged a bit more on this前一阵子。

09-11 18:06
查看更多