java併發:AtomicInteger是什麼?

翻譯即是原子性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思想》一書對此包有個說明:大概意思是莫要太過依賴,還是自己去控制爲好。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章