Joh*_*nny 6 java enums multithreading volatile synchronized
今天我看到了AtomicEnum的这个实用程序类,但我想知道是否有可能有原子枚举为什么它不包含在Java标准库中?事实上,我非常怀疑它是否真的是原子的,如果这个实用程序类有效.
AtomicEnum类是这样的
Gra*_*ray 17
今天我看到了AtomicEnum的这个实用程序类,但我想知道是否有可能有原子枚举为什么它不包含在Java标准库中?
在AtomicEnum您链接类只是包裹AtomicReference这使得任何并发访问类Object.
volatile enumField如果你有多个线程正在获取并同时设置它,那么真的是你需要的.该volatile关键字确保其他线程可以看到一个线程所做的更新.AtomicReference如果需要执行某种compareAndSet(...)方法,则需要使用- 如果字段是特定值,则进行原子测试,然后才更新它.
我如何检查它是否以原子方式执行操作?
AtomicReference是java.util.concurrent经过充分测试的课程的一部分.
是否有一个工具可以查看已编译的代码,并确保它只在一个机器指令中完成所有操作?
这不应该是必要的.AtomicReference如果您想知道它在做什么,您可以查看源代码.不幸的是,真正的魔力在于本sun.misc.Unsafe机代码.
是否有可能从代码中发现它?
这不应该是必要的.
因此,如果这个Atomic枚举工作,我可以有一个属性AtomicEnum,它可以安全地使用它没有volatile关键字和同步的getter和setter?
是的,AtomicReference包装一个,volatile V value所以你不必这样做.