使用比较和设置与多个预期值与原子参考



我有一个独特的情况。我希望能够使用AtomicReferencecompareAndSet()功能,但有点扭曲。

通常,在实际更改单个预期值之前,使用compareAndSet()与单个预期值进行比较。在我的例子中,要比较的预期值可能是许多值之一。

有没有办法使用AtomicReference做到这一点?如果没有,我应该使用哪些其他技术?也许只是传统的synchronized用途?

我假设您有Set的期望值。 在这种情况下...

<T> boolean setIfInExpected(AtomicReference<T> ref, Set<?> expected, T newValue) {
  while (true) {
    T current = ref.get();
    if (set.contains(current)) {
      if (atomicReference.compareAndSet(current, newValue)) {
        return true;
      }
    } else {
      return false;
    }
  }
}

这是compareAndSet的典型使用方式:它们在循环中运行,直到AtomicReferencegetcompareAndSet之间没有变化。

相关内容

  • 没有找到相关文章

最新更新