import java.util.concurrent.atomic.AtomicInteger;
/**
* 《JAVA 并发编程》:JAVA语言原生数据类型和并发包(JUI)中的Atomic数据类型对比。
*
*/
public class Atomicity {
private static int nonAtomicCounter = 0;
private static AtomicInteger atomicCounter = new AtomicInteger(0);
private static int times = 0;
public static void caculate() {
times++;
for (int i = 0; i < 1000; i++) {
new Thread(new Runnable() {
public void run() {
nonAtomicCounter++;
atomicCounter.incrementAndGet();
}
}).start();
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
}
}
public static void main(String[] args) {
caculate();
System.out.println("Non-atomic counter: " + times + ":" + nonAtomicCounter);
System.out.println("Atomic counter: " + times + ":" + atomicCounter);
}
}
转载于:https://my.oschina.net/icoderme/blog/278979