【发布时间】:2020-08-08 17:50:14
【问题描述】:
以下代码在Java中有效
volatile AtomicInteger a = new AtomicInteger(123);
我们是否需要在 AtomicInteger 等原子变量上使用 volatile 关键字?还是volatile是多余的?
【问题讨论】:
-
您可能应该使用
final,而不是volatile。如果final对您不起作用,那么您要么在做一些非常棘手的事情,要么您可能会犯错误。不要忘记变量a不是AtomicInteger。a变量持有对可变AtomicInteger堆对象的引用。在使用AtomicInteger的正常方式中,程序的不同部分及其不同的线程都将通过变异和检查同一个共享对象进行通信,而不通过更改a变量的对象来进行通信指。
标签: java multithreading synchronization volatile atomicinteger