【发布时间】:2012-02-15 23:57:14
【问题描述】:
例如,一个线程通过创建它的对象来创建和填充不可变类的引用变量,另一个线程在第一个线程完成之前启动并创建不可变类的另一个对象,不可变类不会使用是线程不安全的吗?
创建不可变对象也意味着所有字段都必须标记为 final。
如果引用 新创建的实例从一个线程传递到另一个线程 同步
他们是否想说其他线程可能会将引用变量重新指向不可变类的其他对象,这样线程将指向不同的对象而导致状态不一致?
【问题讨论】:
-
没有。每个线程都在创建一个不可变对象的不同实例。我根本看不到线程风险。
-
+不,不可变模型可以包含一个非线程安全的方法(做一个期望运行同步的逻辑+这个方法不会改变不可变的内部状态型号)
标签: java