我們知道i++操作不是原子操作, 除了使用Synchronized進(jìn)行同步外,也可以使用AtomicInteger/AtomicLong原子類進(jìn)行實現(xiàn)。
package com.wkcto.volatilekw;
import java.util.concurrent.atomic.AtomicInteger;
/**
* 使用原子類進(jìn)行自增
* Author: 老崔
*/
public class Test04 {
public static void main(String[] args) throws InterruptedException {
//在main線程中創(chuàng)建10個子線程
for (int i = 0; i < 1000; i++) {
new MyThread().start();
}
Thread.sleep(1000);
System.out.println( MyThread.count.get());
}
static class MyThread extends Thread{
//使用AtomicInteger對象
private static AtomicInteger count = new AtomicInteger();
public static void addCount(){
for (int i = 0; i < 10000; i++) {
//自增的后綴形式
count.getAndIncrement();
}
System.out.println(Thread.currentThread().getName() + " count=" + count.get());
}
@Override
public void run() {
addCount();
}
}
}