多線程控制類-AtomicInteger原子類解決非原子操作問題

1.demo代碼:
package cn.yb.thread;

import java.util.concurrent.atomic.AtomicInteger;

/**
 * 原子類解決非原子操作問題
 * @author yb
 *
 */
public class ThreadAutomicSlove {
//	static private int n;// 執行n++操作的變量
	static AtomicInteger auAtomicInteger;

	public static void main(String[] args) throws InterruptedException {
        int j = 0;
        while(j<100) {
//        	n=0;
        auAtomicInteger = new AtomicInteger(0);//創建原子整數,初始值是0
		Thread thread1 = new Thread(new Runnable() {
			public void run() {
				for (int i = 0; i < 1000; i++) {
//					n++;
					auAtomicInteger.getAndIncrement();
				}
			}
		});
		Thread thread2 = new Thread(new Runnable() {

			public void run() {
				for (int i = 0; i < 1000; i++) {
//					n++;
					auAtomicInteger.getAndIncrement();
				}
			}
		});
		thread1.start();
		thread2.start();
		thread1.join();//線程1加入主線程
		thread2.join();//線程2加入主線程
		System.out.println("n的最終值是:"+auAtomicInteger.get());
		j++;
        }	
	}
}

2.運行效果:

在這裏插入圖片描述

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