原子变量上的 volatile 关键字

Volatile keyword on Atomic Variable

以下代码在Java

有效
volatile AtomicInteger a = new AtomicInteger(123);

AtomicInteger 等原子变量是否需要 volatile 关键字?或者 volatile 是多余的?

对于大多数理智的用例来说这是多余的,但可以想象它适用于一些奇怪的情况——我想不出任何。如有疑问,请使用 final.

volatile 是多余的,因为 AtomicInteger 中的变量已经是 volatile 并将提供所需的 happens-before 关系。只需将字段设置为最终字段即可。