无法理解方法1和方法3是如何帮助实现安全发布的。任何人都可以帮助我理解这个例子,如果可能的话。安全发布
要安全地发布对象,无论是 参考对象和 对象的状态必须在同一时间内看到其他 线程。甲 正确构造的对象可以是 安全地发布:
初始化从静态初始化
存储对它的引用到易失性字段或的AtomicReference
存储一个对象引用参考它到一个正确构建的最终字段 对象
St或者将其引用到由锁定适当保护的字段中。
无法理解方法1和方法3是如何帮助实现安全发布的。任何人都可以帮助我理解这个例子,如果可能的话。安全发布
要安全地发布对象,无论是 参考对象和 对象的状态必须在同一时间内看到其他 线程。甲 正确构造的对象可以是 安全地发布:
初始化从静态初始化
存储对它的引用到易失性字段或的AtomicReference
存储一个对象引用参考它到一个正确构建的最终字段 对象
St或者将其引用到由锁定适当保护的字段中。
有在Java内存模型特定同步规则定义“之前发生”在决定当一个应用程序是保证看到它引用变量的“新鲜”值的Java程序的关系。 “安全发布”方法实现了安全发布,作为同步规则和Java语言规范中规定的其他规则的逻辑结果。
JLS section 12.4.2指定类初始化的过程。在这个过程中发生的同步大概足以保证安全发布。
JLS section 17.4.第2点处理易失性字段。 AtomicReferences的这个属性是javadocs中指定行为的结果。
要真正了解这个东西,你需要阅读所有JLS第17条,细心,多次。
是的,只读一次。是非常有帮助的,需要再读一遍。谢谢你的回答和建议。 – devnull 2010-10-19 06:32:58
这将是2个问题。 – Raedwald 2017-01-26 09:20:01