比较volatile下count++和 AtomicInteger自增中原子操作问题_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > 比较volatile下count++和 AtomicInteger自增中原子操作问题

比较volatile下count++和 AtomicInteger自增中原子操作问题

 2019/11/4 18:50:16  whnuliba  程序员俱乐部  我要评论(0)
  • 摘要:importjava.util.concurrent.CountDownLatch;importjava.util.concurrent.ExecutorService;importjava.util.concurrent.Executors;importjava.util.concurrent.atomic.AtomicInteger;publicclassVolatileTest{privateAtomicIntegercount1=newAtomicInteger(0)
  • 标签:问题 操作
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.atomic.AtomicInteger;

public class VolatileTest {
private  AtomicInteger count1 = new AtomicInteger(0);

private volatile int count = 0;

public /* synchronized */ void increase() {
count++;
}
public  void increase2() {
count1.addAndGet(1);
}
public static void main(String[] args) throws InterruptedException {
CountDownLatch end = new CountDownLatch(10);
CountDownLatch start =  new CountDownLatch(1);
ExecutorService es   = Executors.newFixedThreadPool(10);
VolatileTest v = new VolatileTest();
for(int i=0;i<10;i++) {
es.execute(()->{
try {
start.await();
for(int j=0;j<1000;j++) {
v.increase();
}
} catch (InterruptedException e) {
e.printStackTrace();
}finally {
end.countDown();
}

});
}
System.out.println("线程开启执行");
start.countDown();
end.await();
System.out.println("计算结果");
System.out.println(v.count);

}
   

}
上一篇: hybris backoffice创建product遇到的synchronization问题和解答 下一篇: 没有下一篇了!
发表评论
用户名: 匿名