java 多线程 AtomicInteger原子变量

/**
 * AtomicInteger
 * @author admin
 *
 */
public class AtomicVolatile {
	private static AtomicInteger count=new AtomicInteger(0);//原子变量
	/**
	 * 加1
	 */
	private static void add(){
		count.incrementAndGet();
	}
	/**
	 * 主程序
	 * @param args
	 */
	public static void main(String[] args) {
		ExecutorService threadPool=Executors.newFixedThreadPool(100);//线程池Integer.MAX_VALUE
		//#s
		for (int i = 0; i < 10000; i++) {
			threadPool.execute(new Runnable() {
				@Override
				public void run() {
					AtomicVolatile.add();//不断加1
				}
			});
		}
		//#e
		threadPool.shutdown();
		try {
			threadPool.awaitTermination(500, TimeUnit.SECONDS);//给予一个关闭时间(timeout)等待线程停止,但是实际关闭时间应该会这个小
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		
		System.out.println("输出:"+AtomicVolatile.count);//输出结果与预期一致
		
	}

}

猜你喜欢

转载自franciswmf.iteye.com/blog/2287381