草庐IT

compareAndSwap

全部标签

java - 是否保证所有参与线程的 compareAndSwap 都不会失败?

假设一些“N”个线程正在尝试CAS一个AtomicInteger变量,是否保证CAS必须恰好一个线程成功?是否有可能所有“N”个线程都尝试失败? 最佳答案 compareAndSet旨在由硬件实现,因此行为将取决于您运行的特定硬件。来自java.util.concurrent.atomic:Thismethod(whichvariesinargumenttypesacrossdifferentclasses)atomicallysetsavariabletotheupdateValueifitcurrentlyholdstheexp

java - weakCompareAndSwap 与 compareAndSwap

这个问题不是关于它们之间的区别——我知道什么是虚假故障以及为什么它会发生在LL/SC上。我的问题是,如果我使用的是intelx86并使用java-9(内部版本149),为什么它们的汇编代码之间存在差异?publicclassWeakVsNonWeak{staticjdk.internal.misc.UnsafeUNSAFE=jdk.internal.misc.Unsafe.getUnsafe();publicstaticvoidmain(String[]args)throwsNoSuchFieldException,SecurityException{Holderh=newHolder