文章目录
AtomicInteger原子类来统计相加减少的次数
- AtomicInteger原子类来统计相加减少的次数
- synchronized 加锁进行统计
- CyclicBarrier 线程等待的工具类
- 发生错误的逻辑修改
如下的代码, 使用AtomicInteger
原子类来统计相加减少的次数. 和发生错误的次数.
并且用布尔数组, 如果某个值, 相加了, 那么就设置成true.(boolean数组 , 里面的元素, 默认为false)
public class MultiThreadsError implements Runnable{
static MultiThreadsError instance = new MultiThreadsError();
int index = 0;
//真正加的次数
static AtomicInteger realIndex = new AtomicInteger();
//发生错误的次数 AtomicInteger的作用是把i++的操作, 三步合为一步, 原理为 cas
static AtomicInteger wrongIndex = new AtomicInteger();
//存储当前值的数组
final boolean[] marked = new boolean[1000000000];
public static void main(String[] args) throws InterruptedException {
Thread thread1 = new Thread(instance);
Thread thread2 = new Thread(instance);
thread1.start();
thread2.start();
//主线程 等待子线程
thread1.join();
thread2.join();
//打印结果
System.out.println("执行结果"+instance.index);
System.out.println("真正运行的次数"+ realIndex.get());
System.out.println("发生错误的次数"+ wrongIndex.get());
}
@Override
public void run() {
for (int i = 0; i
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?