java并发:AtomicInteger是什么?

版权声明:本文为博主原创文章,未经博主允许不得转载。你想转载请附加连接哦 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思想》一书对此包有个说明:大概意思是莫要太过依赖,还是自己去控制为好。

猜你喜欢

转载自blog.csdn.net/dmw412724/article/details/83059544
今日推荐