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