В чём заключаются различия между java.util.concurrent.Atomic*.compareAndSwap() и java.util.concurrent.Atomic*.weakCompareAndSwap()
weakCompareAndSwap()
не создает memory barrier и не дает гарантии happens-before;weakCompareAndSwap()
сильно зависит от кэша/CPU, и может возвращатьfalse
без видимых причин;weakCompareAndSwap()
, более легкая, но поддерживаемая далеко не всеми архитектурами и не всегда эффективная операция.
Oct. 21, 2023, Источник