【发布时间】:2019-04-04 15:27:35
【问题描述】:
在谷歌上搜索了很多之后,我发现了 volatile 关键字的多个定义。
概念 1:
一些网站说,它是线程安全的,因为线程作用于存储 volatile 关键字的主内存并对其进行修改,而不会将其拉入线程堆栈空间。
概念2:
有人说,它不是线程安全的,因为它会导致线程竞争条件。 As ,线程将 volatile 变量拉入堆栈空间,对其进行修改并立即将其放回主存。但是,在另一个线程之间可以来对 volatile 变量采取行动并采取行动。所以,这样一来,某些值就会丢失。
哪个概念是正确的?
【问题讨论】:
-
两者都可能是正确的,这取决于 volatile 变量的使用方式。
-
既然您询问的是 Java,请确保您阅读的是 Java 特定的解释。
volatile关键字在不同的编程语言中有不同的含义。
标签: java multithreading volatile