java.util.concurrent.atomic包中提供了对基本数据类型,对数组中的基本数据类型和类中的基本数据类型的操作。详情见API。
下面实例简单介绍AtomicInteger类的使用:
1 public class AtomicTest { 2 public static void main(String[] args) { 3 final Ticket ticket = new Ticket(); 4 for (int i = 0; i < 3; i++) { 5 new Thread(new Runnable() { 6 @Override 7 public void run() { 8 while(ticket.getCount()>0){ 9 System.out.println(Thread.currentThread().getName()+" count: "+ticket.decrement()); 10 } 11 } 12 }).start(); 13 } 14 15 } 16 } 17 class Ticket{ 18 public AtomicInteger count = new AtomicInteger(100); 19 20 public int decrement(){ 21 return count.getAndDecrement(); 22 } 23 24 public int getCount() { 25 return count.get(); 26 } 27 28 }
AtomicIntegerArray和AtomicIntegerFieldUpdater也提供了类似的操作,只不过AtomicIntegerArray针对数组中的基本类型,而AtomicIntegerFieldUpdater针对具体对象中的基本类型。