Java 内存模型(从 1.5 开始)将final
字段与非final
字段区别对待。特别是,如果this
在构造过程中引用没有转义,final
那么即使对象通过数据竞争对其他线程可用,对构造函数中字段的写入也保证在其他线程上可见。(不保证对非字段的写入final
可见,因此如果您不正确地发布它们,另一个线程可能会看到它们处于部分构造的状态。)
是否有任何关于 Scala 编译器如何/是否为类创建final
(而不是非final
)支持字段的文档?我查看了语言规范并搜索了网络,但找不到任何明确的答案。(相比之下,@scala.volatile
注释被记录为将字段标记为volatile
)