版权声明:本文为博主原创文章,未经博主允许不得转载。你想转载请附加连接哦 https://blog.csdn.net/dmw412724/article/details/83059544
翻译即是原子性int.
原因在于int的++和--并不是原子性的.在实际操作中很可能需要使用外部锁来控制.
如下代码,直接进行++.结果并不是我们所希望的200000
public class AtomicTest implements Runnable {
private static int count = 0;
public void run() {
for (int i = 0; i < 100000; i++) {
count++;
}
}
public static void main(String[] args) throws InterruptedException {
new Thread(new AtomicTest()).start();
new Thread(new AtomicTest()).start();
Thread.sleep(5000);
System.out.println(count);//130925
}
}
在使用AtomicInteger之后.这样写即可.
public class AtomicTest implements Runnable {
private static AtomicInteger count = new AtomicInteger(0);
public void run() {
for (int i = 0; i < 100000; i++) {
count.getAndIncrement();//该方法即是++
}
}
public static void main(String[] args) throws InterruptedException {
new Thread(new AtomicTest()).start();
new Thread(new AtomicTest()).start();
Thread.sleep(5000);
System.out.println(count);//200000
}
}
《java思想》一书对此包有个说明:大概意思是莫要太过依赖,还是自己去控制为好。