一、原子量简介
原子量就是操作变量的操作是“原子的”,该操作不可再分,因此是线程安全的。
原子量虽然可以保证单个变量在某一个操作过程的安全,但无法保证你整个代码块,或者整个程序的安全性。因此,通常还应该使用锁等同步机制来控制整个程序的安全性。二、原子量的作用
多个线程对单个变量操作也会引起一些问题。在Java5之前,可以通过volatile、synchronized关键字来解决并发访问的安全问题,但这样太麻烦。 Java5之后,专门提供了用来进行单变量多线程并发安全访问的工具包java.util.concurrent.atomic。三、使用示例
AtomicRunnable.java
public class AtomicRunnable implements Runnable { private static AtomicInteger amount = new AtomicInteger(1000); // 原子量,每个线程都可以自由操作 private Integer num; AtomicRunnable(Integer num) { this.num = num; } public void run() { synchronized(AtomicRunnable.class){ Integer result = amount.addAndGet(num); System.out.println(Thread.currentThread().getName()+"使用" + num + "更新了总数,当前总数为:" + result); } }}AtomicTest.java
public class AtomicTest { public static void main(String[] args) throws InterruptedException { Runnable r1 = new AtomicRunnable(10); Runnable r2 = new AtomicRunnable(20); Runnable r3 = new AtomicRunnable(30); Runnable r4 = new AtomicRunnable(40); Runnable r5 = new AtomicRunnable(50); Runnable r6 = new AtomicRunnable(60); Thread t1 = new Thread(r1); Thread t2 = new Thread(r2); Thread t3 = new Thread(r3); Thread t4 = new Thread(r4); Thread t5 = new Thread(r5); Thread t6 = new Thread(r6); t1.start(); t2.start(); t3.start(); t4.start(); t5.start(); t6.start(); }}