Java内存模型(自1.5)将final
字段视为与非final
字段不同。特别是,如果this
引用在构造过程中不会转义,则在构造函数中写入final
字段可保证在其他线程上可见,即使该对象可通过数据争用提供给其他线程。 (写于非final
字段都不能保证是可见的,所以如果你不当发布它们,另一个线程可以看到他们在部分构造状态。)Scala和Java内存模型
是否有关于如何/如果Scala编译器创建的任何文件final
(而不是非final
)支持类的字段?我浏览了语言规范并搜索了网页,但找不到任何明确的答案。 (在比较@scala.volatile
注释是记录标记字段为volatile
)
但是从并发的角度来看,语言结构的行为应该成为我会争辩的规范的一部分! –