【发布时间】:2016-10-18 15:55:05
【问题描述】:
我知道 volatile 应该用在类字段上,以防止 JVM 缓存该值,以便在读取时它始终是最新值。
如果我的理解是正确的,是不是意味着在多线程线程安全环境中工作时,我们应该用volatile 定义所有字段?什么时候不需要将字段定义为volatile?
【问题讨论】:
-
我们应该用 volatile 定义所有字段 每个对象的每个字段?不可以。只有多个并发线程可以访问的字段。
-
volatile 会阻止 JVM 优化与变量相关的代码,如果将所有字段都定义为 volatile,则会损失很多性能。
标签: java multithreading concurrency