该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点
面试官:volatile 变量和 atomic 变量有什么不同
Volatile 变量
volatile
关键字主要用于确保变量的可见性。当一个变量被声明为 volatile
时,它会保证所有线程都能看到该变量的最新值。换句话说,当一个线程修改了一个 volatile
变量的值,新值会立即对其他线程可见。此外,volatile
还会禁止指令重排序,这有助于防止一些内存一致性问题。
然而,volatile
并不保证复合操作的原子性。例如,对于 count++
这样的操作,它包含读取、增加和写入三个步骤,这些步骤可能不是原子的。因此,即使 count
是一个 volatile
变量,多个线程同时对其执行 count++
操作时,仍然可能出现数据不一致的问题。
例子:
public class VolatileExample {
标签:count,变量,面试,线程,atomic,volatile
From: https://blog.csdn.net/qq_27471405/article/details/137354352