2010-10-19 60 views
0

无法理解方法1和方法3是如何帮助实现安全发布的。任何人都可以帮助我理解这个例子,如果可能的话。安全发布

要安全地发布对象,无论是 参考对象和 对象的状态必须在同一时间内看到其他 线程。甲 正确构造的对象可以是 安全地发布:

  • 初始化从静态初始化

  • 存储对它的引用到易失性字段或的AtomicReference

  • 存储一个对象引用参考它到一个正确构建的最终字段 对象

  • St或者将其引用到由锁定适当保护的字段中。

+0

这将是2个问题。 – Raedwald 2017-01-26 09:20:01

回答

3

有在Java内存模型特定同步规则定义“之前发生”在决定当一个应用程序是保证看到它引用变量的“新鲜”值的Java程序的关系。 “安全发布”方法实现了安全发布,作为同步规则和Java语言规范中规定的其他规则的逻辑结果。

  1. JLS section 12.4.2指定类初始化的过程。在这个过程中发生的同步大概足以保证安全发布。

  2. JLS section 17.4.第2点处理易失性字段。 AtomicReferences的这个属性是javadocs中指定行为的结果。

  3. JLS section 17.5.

  4. JLS section 17.4.圆点1

要真正了解这个东西,你需要阅读所有JLS第17条,细心,多次。

+0

是的,只读一次。是非常有帮助的,需要再读一遍。谢谢你的回答和建议。 – devnull 2010-10-19 06:32:58