主要跟上一篇的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(); } } |