使用易失性 “嗨,阿米戈!”“嗨,艾莉!”“我想告诉你 volatile 修饰符。你知道那是什么吗?”“跟线有关,记不太清了。”“那就听好了。这里有一些技术细节供您参考:”“计算机有两种内存:全局(普通)内存和处理器内置内存。处理器内置内存分为寄存器、一级缓存(L1)、二级缓存(L2)和第三级(L3)。”“这些类型的内存具有不同的速度。最快和最小的内存是寄存器,然后是处理器缓存(L1、L2、L3),最后是全局内存(最慢)。”“全局内存和处理器缓存以截然不同的速度运行,因此 Java 机器允许每个线程将最常用的变量存储在本地线程内存(在处理器缓存中)中。”“这个过程能以某种方式被控制吗?”“不完全是。所有工作都由 Java 机器完成。在优化性能方面非常智能。”“但这就是为什么我要告诉你这个。有一个小问题。当两个线程使用同一个变量时,每个线程都可以在自己的本地缓存中存储一​​个副本。然后一个线程可能会更改变量,但第二个可能看不到变化,因为它仍在使用自己的变量副本。”“嗯,那有什么办法呢?”“Java的创造者为这种情况提供了一个特殊的关键字:volatile。如果一个变量被不同的线程访问,你需要用volatile修饰符来标记它,这样Java机器就不会把它放入缓存中。通常情况下是这样的看起来:“public volatile int count = 0;“哦,我想起来了,你已经说过了,我已