我正在阅读 Joshua Bloch 的“Effective Java Second Edition”,我对以下关于并发的声明感到困惑 -
“语言规范保证读取或写入变量是原子的,除非变量的类型为 long 或 double [JLS, 14.4.7]。换句话说,读取除 long 或 double 之外的变量保证返回一个值被某个线程存储到该变量中,即使多个线程同时修改变量并且没有同步。”
如果有人手头有书,这在第 259 页的最后一段中有说明。
即使多个线程正在修改它,引用的变量是否总是有值?