从技术上讲,你需要让他们final
,volatile
或读取 使用写出来synchronzied
,以保证读者会读的最先进的最新值。正如您现在所拥有的,如果一个线程写入一个值,则不能保证另一线程将读取相同的值。这是因为读取线程可能会看到缓存的值。对于多核cpu和各种级别的缓存,这种可能性更大。
关于这方面的一本好书是《Java Concurrency in Practice》。
我是否需要同步对Java中不可变类型的访问?
从技术上讲,你需要让他们final
,volatile
或读取 使用写出来synchronzied
,以保证读者会读的最先进的最新值。正如您现在所拥有的,如果一个线程写入一个值,则不能保证另一线程将读取相同的值。这是因为读取线程可能会看到缓存的值。对于多核cpu和各种级别的缓存,这种可能性更大。
关于这方面的一本好书是《Java Concurrency in Practice》。