主要跟上一篇的AtomicInteger一起对比,AtomicInteger设计的目的是对某个Ingeter的线程安全操作,AtomicIntegerFieldUpdater设计的目标是对某class中的某Integer(或int)属性进行并发操作,并保护操作的原子性和线程的安全性。
AtomicIntegerFieldUpdater本身是abstract的,使用实例:
class Task
extends Thread{
private AtomicIntegerFieldUpdater<Container> updater = AtomicIntegerFieldUpdater. newUpdater(Container. class, "no"); private Container c; public Task(Container c){ this. c = c; } @Override public void run() { System. out.println( updater.getAndIncrement( c)); System. out.println( updater.getAndIncrement( c)); } } public class UpdaterUsage { public static void main(String[] args){ Container c = new Container(); Task t1 = new Task(c); Task t2 = new Task(c); t1.start(); t2.start(); } } |