[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"時,不予更新: