源码是一样的。publicfinalbooleancompareAndSet(Vexpect,Vupdate){returnunsafe.compareAndSwapObject(this,valueOffset,expect,update);}publicfinalbooleanweakCompareAndSet(Vexpect,Vupdate){returnunsafe.compareAndSwapObject(this,valueOffset,expect,update);}有什么意义? 最佳答案 在x86上,LOCKCMPX
(请注意,这个问题不是关于CAS,而是关于“可能会虚假失败”Javadoc)。AtomicInteger类中这两个方法在Javadoc中的唯一区别是weakCompareAndSet包含以下注释:“可能错误地失败”.现在除非我的眼睛被某种咒语欺骗了,否则这两种方法看起来确实是一样的:publicfinalbooleancompareAndSet(intexpect,intupdate){returnunsafe.compareAndSwapInt(this,valueOffset,expect,update);}/*...*Mayfailspuriously.*/publicfinal
(请注意,这个问题不是关于CAS,而是关于“可能会虚假失败”Javadoc)。AtomicInteger类中这两个方法在Javadoc中的唯一区别是weakCompareAndSet包含以下注释:“可能错误地失败”.现在除非我的眼睛被某种咒语欺骗了,否则这两种方法看起来确实是一样的:publicfinalbooleancompareAndSet(intexpect,intupdate){returnunsafe.compareAndSwapInt(this,valueOffset,expect,update);}/*...*Mayfailspuriously.*/publicfinal
JavaAtomicInteger类有一个方法-booleanweakCompareAndSet(intexpect,intupdate)它的文档说:Mayfailspuriously.这里的“虚假失败”是什么意思? 最佳答案 虚假地:没有明显的原因根据atomic包javadoc:TheatomicclassesalsosupportmethodweakCompareAndSet,whichhaslimitedapplicability.Onsomeplatforms,theweakversionmaybemoreefficien