您当前的位置: 首页 >  Java

java持续实践

暂无认证

  • 1浏览

    0关注

    746博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Java多线程 a++线程问题 找出减少的地方

java持续实践 发布时间:2020-08-31 21:15:35 ,浏览量:1

文章目录
      • AtomicInteger原子类来统计相加减少的次数
      • synchronized 加锁进行统计
      • CyclicBarrier 线程等待的工具类
      • 发生错误的逻辑修改

AtomicInteger原子类来统计相加减少的次数

如下的代码, 使用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             
关注
打赏
1658054974
查看更多评论
0.0396s