我们知道i++操作不是原子操作, 除了使用Synchronized进行同步外,也可以使用AtomicInteger/AtomicLong原子类进行实现。
package com.wkcto.volatilekw;
import java.util.concurrent.atomic.AtomicInteger;
/**
* 使用原子类进行自增
* Author: 老崔
*/
public class Test04 {
public static void main(String[] args) throws InterruptedException {
//在main线程中创建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();
}
}
}