对AtomicInteger的一点疑惑,请大师帮忙解答一下
AtomicInteger的“boolean compareAndSet(int expect, int update)”方法,API上解释的比较清楚了,是说“如果当前值 == 预期值,则以原子方式将该设置为给定的更新值”,并且,它内部是调用的一个native方法。
我的疑惑如下:
1、为而要用native实现这个功能,直接“if(value==expect) value=update;”不可以吗?
2、是否是考虑到“if(value==expect) value=update;”这个写法不是多线程安全的?我试过,貌似是多线程安全的;
3、请问有没有什么示例代码能证明用“if(value==expect) value=update;”不可取代native方式,或是说用什么代码能体现出JDK里compareAndSet和自己写的“if(value==expect) value=update;”的区别?
[解决办法]