Java內存模型(自1.5)將final
字段視爲與非final
字段不同。特別是,如果this
引用在構造過程中不會轉義,則在構造函數中寫入final
字段可保證在其他線程上可見,即使該對象可通過數據爭用提供給其他線程。 (寫於非final
字段都不能保證是可見的,所以如果你不當發佈它們,另一個線程可以看到他們在部分構造狀態。)Scala和Java內存模型
是否有關於如何/如果Scala編譯器創建的任何文件final
(而不是非final
)支持類的字段?我瀏覽了語言規範並搜索了網頁,但找不到任何明確的答案。 (在比較@scala.volatile
註釋是記錄標記字段爲volatile
)
但是從併發的角度來看,語言結構的行爲應該成爲我會爭辯的規範的一部分! –