在 Java 中,当我们想确保编译器不应该通过保留变量的本地副本来进行优化时,我们就可以使变量成为易变的。将变量用作 volatile 可确保线程不会使用变量的本地副本,但会使用存储在主内存中的变量。但是,这是否意味着 volatile 变量是线程安全的?另外,在原始类型的情况下和我们使用用户定义的对象的情况下,它有何不同?
最佳答案
volatile
表示值永远是新鲜的;如果另一个线程在您之前将一个新对象放入变量中,您将看到该对象。
它不会改变值的行为;您无法神奇地使对象成为线程安全的。
关于java - volatile是否意味着它是线程安全的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9059266/