安全出版

时间:2010-10-19 05:06:01

标签: java

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

  

安全地发布对象,两者都是   引用对象和   必须使对象的状态可见   其他线程同时。一个   正确构造的对象可以   安全发布者:

     
      
  • 从静态初始化程序初始化对象引用

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

  •   
  • 将对它的引用存储到正确构造的最终字段中   对象

  •   
  • 将对它的引用存储到由正确保护的字段中   锁。

  •   

1 个答案:

答案 0 :(得分:4)

Java内存模型中有特定的同步规则,用于定义Java程序中的“先发生”关系,这些关系确定应用程序何时可以保证看到它引用的变量的“新鲜”值。 “安全发布”方法实现安全发布,作为同步规则的逻辑结果,以及Java语言规范中规定的其他规则。

  1. JLS section 12.4.2指定初始化类的过程。此过程中发生的同步可能足以保证安全发布。

  2. JLS section 17.4.项目符号第2点涉及volatile字段。 AtomicReferences的这个属性是javadocs中指定的行为的结果。

  3. JLS section 17.5.

  4. JLS section 17.4.项目符号1

  5. 要真正理解这些内容,您需要多次仔细阅读所有JLS第17节。