天天看點

AtomicReferenceFieldUpdater 使用

[b]AtomicReferenceFieldUpdater[/b]位于[b]java.util.concurrent.atomic[/b]包中,作用是[color=red]原子性地更新對象屬性[/color]。

以原子性更新Cat類的name屬性為例:

name屬性需要保持[color=red]可見性[/color],且[color=red]不是私有變量[/color]。

[b]1. 執行個體化Updater[/b]

調用[b]AtomicReferenceFieldUpdater[/b]類的靜态[color=red]newUpdater[/color]方法執行個體化,傳入需要原子性更新屬性的Cat類、被更新屬性類型為String,名稱為name:

[b]2. 執行個體化目标類[/b]

建立一個需要原子性更新name屬性的Cat執行個體:

[b]3. 原子性更新[/b]

調用[color=red]compareAndSet[/color]方法原子性更新name屬性:傳入上一步建立的Cat執行個體cat1、期望的原name值和新name值:

當cat1的原name值是期望的"mycat"時,會被更新為"myPet"

原name值不是"mycat"時,不予更新: