该文档非常清楚。
getAndSet
->“以原子方式设置为给定值并返回前一个值。”compareAndSet
->“如果当前值==期望值,则将值原子设置为给定的更新值。”
毫不奇怪,
compareAndSet有两个论点。
在您的特定情况下:
if (flag.getAndSet(false))
将设置flag
于false
仅当它先前的值true
- 那相当于
if (flag.compareAndSet(true, false))

该文档非常清楚。
getAndSet->“以原子方式设置为给定值并返回前一个值。”
compareAndSet->“如果当前值==期望值,则将值原子设置为给定的更新值。”
毫不奇怪,
compareAndSet有两个论点。
在您的特定情况下:
if (flag.getAndSet(false))将设置
flag于
false仅当它先前的值
true
if (flag.compareAndSet(true, false))