当前位置: 首页 > news >正文

List list=new ArrayList()抛出的ArrayIndexOutOfBoundsException异常

1.应用场景,今天生产日志监控到一下ArrayList 进行add 异常,具体日志如下:

eptionHandler.handler(178): TXXYBUSSINESS|执行异常
java.util.concurrent.CompletionException: java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 0at java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:315) ~[?:?]at java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:320) ~[?:?]at java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1807) ~[?:?]at com.txxy.common.support.ThreadContextTaskDecorator.lambda$decorate$0(ThreadContextTaskDecorator.java:20) ~[txxy-common.jar:10.3.10-SNAPSHOT]at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]at java.lang.Thread.run(Thread.java:833) ~[?:?]
Caused by: java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 0at java.util.ArrayList.add(ArrayList.java:455) ~[?:?]at java.util.ArrayList.add(ArrayList.java:467) ~[?:?]at com.txxy.api.support.PersonalRiskReportSupport.lambda$riskType4$28(PersonalRiskReportSupport.java:528) ~[classes/:?]at java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1804) ~[?:?]

具体代码:

List<DTO> riskSummaryList = new ArrayList<>();// 10条记录批量查询Lists.partition(ids, Paging.DEF_PAGE_SIZE).forEach(arrIds -> {List<CompletableFuture<Void>> list =arrIds.stream().map(id -> CompletableFuture.runAsync(() -> {try {// ....代码省略了// http请求if (responseDetail.isSuccess()) {riskSummaryList.add(new DTO() );}} catch (TxxyBusinessException e) {}}, apiTaskExecutor)).collect(Collectors.toList());list.stream().map(CompletableFuture::join).collect(Collectors.toList());});result.setRiskSummaryList(riskSummaryList);

上面代码是对ids 分片按照10条记录查询远程接口,并将结果集放到list riskSummaryList 对象中 riskSummaryList.add(new DTO() )最后输出结果.

分析:这种情况是多线程并发情况下添加数据ensureCapacity 这个方法是非线程安全的导致计算值扩容不够抛出的异常。
查看ArrayList源码:
在这里插入图片描述
解决方法:
1.使用官网提供的方法Collections.synchronizedList

  List list = Collections.synchronizedList(new ArrayList(...));

2.new一个对象CopyOnWriteArrayList方法

new CopyOnWriteArrayList<>()

相关文章:

List list=new ArrayList()抛出的ArrayIndexOutOfBoundsException异常

1.应用场景&#xff0c;今天生产日志监控到一下ArrayList 进行add 异常&#xff0c;具体日志如下&#xff1a; eptionHandler.handler(178): TXXYBUSSINESS|执行异常 java.util.concurrent.CompletionException: java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bo…...

桶排序算法

桶排序算法 算法思想概述&#xff1a;桶排序的主要步骤如下&#xff1a; 算法goland实现&#xff1a;图解演示&#xff1a; 算法思想概述&#xff1a; 桶排序&#xff08;Bucket Sort&#xff09;是一种非比较性的排序算法&#xff0c;它将待排序的元素分到有限数量的桶&#…...

P8604 [蓝桥杯 2013 国 C] 危险系数

题目背景 抗日战争时期&#xff0c;冀中平原的地道战曾发挥重要作用。 题目描述 地道的多个站点间有通道连接&#xff0c;形成了庞大的网络。但也有隐患&#xff0c;当敌人发现了某个站点后&#xff0c;其它站点间可能因此会失去联系。 我们来定义一个危险系数 DF(x,y)&…...

Excel·VBA表格横向、纵向相互转换

如图&#xff1a;对图中区域 A1:M6 横向表格&#xff0c;转换成区域 A1:C20 纵向表格&#xff0c;即 B:M 列转换成每2列一组按行写入&#xff0c;并删除空行。同理&#xff0c;反向操作就是纵向表格转换成横向表格 目录 横向转纵向实现方法1转换结果 实现方法2转换结果 纵向转横…...

Leetcode-每日一题【剑指 Offer 06. 从尾到头打印链表】

题目 输入一个链表的头节点&#xff0c;从尾到头反过来返回每个节点的值&#xff08;用数组返回&#xff09;。 示例 1&#xff1a; 输入&#xff1a;head [1,3,2]输出&#xff1a;[2,3,1] 限制&#xff1a; 0 < 链表长度 < 10000 解题思路 1.题目要求我们从尾到头反过…...

LeetCode--HOT100题(22)

目录 题目描述&#xff1a;160. 相交链表&#xff08;简单&#xff09;题目接口解题思路代码 PS: 题目描述&#xff1a;160. 相交链表&#xff08;简单&#xff09; 给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表…...

产品体系架构202308版

1.前言 当我们不断向前奔跑时&#xff0c;需要回头压实走过的路。不断扩张的同时把相应的内容沉淀下来&#xff0c;为后续的发展铺垫基石。 不知从何时起&#xff0c;产品的架构就面向了微服务/中台化/前后端分离/低代码化/分布式/智能化/运行可观测化的综合体&#xff0c;让…...

Linux systemctl 简单介绍与使用

在Linux下&#xff0c;systemctl是一个管理系统服务的命令。它提供了对systemd服务的控制和管理。 在系统中使用systemctl命令&#xff0c;您可以执行以下操作&#xff1a; 启动服务&#xff1a;systemctl start servicename停止服务&#xff1a;systemctl stop servicename重…...

恺英网络宣布:与华为鸿蒙系统展开合作,将开发多款手游

8月5日消息&#xff0c;恺英网络宣布旗下子公司盛和网络参加了华为开发者大会&#xff08;HDC.Together&#xff09;游戏服务论坛&#xff0c;并在华为鸿蒙生态游戏先锋合作启动仪式上进行了亮相。恺英网络表示&#xff0c;将逐步在HarmonyOS上开发多款游戏&#xff0c;利用Har…...

Vue CORS

使用Vue框架报错&#xff0c;客户端浏览器有CORS错误&#xff0c;怎么解决&#xff1f; 参考API Proxying During Development&#xff0c;可以新增或修改config/index.js下的proxyTable属性。 留意到 proxyTable的key值为/api&#xff0c;代表所有服务端域名都改成以/api开头…...

Godot 4 源码分析 - 文件读入编码处理

今天需要读入xml文件进行处理&#xff0c;结果读入一个带中文的文件时&#xff0c;出错了。当然程序还能运行&#xff0c;但编译器一直报错&#xff0c;而且XML解析也不正确 单步调试发现读入的内容出现乱码&#xff0c;具体逻辑&#xff1a; String FileAccess::get_as_text…...

Linux 中使用 verdaccio 搭建私有npm 服务器

安装 Node Linux中安装Node 安装verdaccio npm i -g verdaccio安装完成 输入verdaccio,出现下面信息代表安装成功&#xff0c;同时输入verdaccio后verdaccio已经处于运行状态&#xff0c;当然这种启动时暂时的&#xff0c;我们需要通过pm2让verdaccio服务常驻 ygiZ2zec61wsg…...

C++入门之stl六大组件--stack和queue源码深度剖析及模拟实现

目录 前言 一、stack的介绍和使用 1.stack的介绍 2.stack的使用 3.stack的模拟实现 二、queue的介绍和使用 1.queue的介绍 2.queue的使用 3.queue的模拟实现 三、priority_queue的介绍和使用 1.priority_queue的介绍 2.priority_queue的使用 3.priority_queue的模…...

MyCat配置文件schema.xml讲解

1.MyCat配置 1.1 schema标签 如果checkSQLschema配置的为false&#xff0c;那么执行DB01.TB_ORDER时就会报错&#xff0c;必须用use切换逻辑库以后才能进行查询。 sqlMaxLimit如果未指定limit进行查询&#xff0c;列表查询模式默认为100,最多只查询100条。因为用mycat后默认数…...

Grafana集成prometheus(2.Grafana安装)

查找镜像 docker search grafana下载指定版本 docker pull grafana/grafana:10.0.1启动容器脚本 docker run -d -p 3000:3000 --namegrafana grafana/grafana:10.0.1查看是否启动 docker ps防火墙开启 检查防火墙3000端口是否开启 默认用户及密码 admin/admin 登录 ht…...

代码随想录算法训练营第五十七天| 647. 回文子串 516.最长回文子序列

代码随想录算法训练营第五十七天| 647. 回文子串 516.最长回文子序列 一、力扣647. 回文子串 题目链接 思路&#xff1a;对于字符串cabac&#xff0c;其中a,b,c,aba,cabac&#xff0c;都是回文子串&#xff0c;如果当前的字串是回文字串&#xff0c;那么它的字串中也会有回文…...

django 优化方式

前言 对于网站和Web APP来说&#xff0c;相同的类型的产品&#xff0c;响应速度越好&#xff0c;那么用户量就越高。不可否认的是&#xff0c;响应速度是用户黏粘性最好的方式之一&#xff0c;但往往不知道如何下手解决&#xff0c;希望这篇文章可以给予你一些思路 对于网站和…...

IDEA中怎么使用git下载项目到本地,通过URL克隆项目(giteegithub)

点击 新建>来自版本控制的项目 点击后会弹出这样一个窗口 通过URL拉取项目代码 打开你要下载的项目仓库 克隆>复制 gitee github也是一样的 返回IDEA 将刚刚复制的URL粘贴进去选择合适的位置点击克隆 下载完成...

09. Docker Compose

目录 1、前言 2、安装Docker Compose 2.1、Docker Compose版本 2.2、下载安装 3、初试Docker Compose 3.1、传统方案部署应用 3.2、使用编排部署应用 3.3、其他命令 3.3.1、ps 3.3.2、images 3.3.3、depends_on 3.3.4、scale 4、小结 1、前言 随着应用架构的不段…...

如何在shell脚本将node_modules里的文件复制一份到public文件里

项目背景&#xff1a;由于公司网络不连接公网&#xff0c;所以在绘制地图大屏项目时&#xff0c;需要我们将边界线数据包也部署起来&#xff0c;来获取边界线数据 解决方案&#xff1a; 1.让后端写个接口或者找个地方将数据包放到服务器即可 2.将数据包放到vue项目的public文…...

监控Redis的关键指标

Redis 也是一个对外服务&#xff0c;所以 Google 的四个黄金指标同样适用于 Redis。 1、延迟 在软件工程架构中&#xff0c;之所以选择 Redis 作为技术堆栈的一员&#xff0c;大概率是想要得到更快的响应速度和更高的吞吐量&#xff0c;所以延迟数据对使用 Redis 的应用程序至…...

Openlayers和leaflet如何选用?

在地图处理这块,Openlayers和Leaflet是非常有名的两个开源的JS框架,他们各有各的优势和劣势,对于刚刚步入此行业的开发者而言怎么选择框架呢? 作者做过一定的探索,在这里将成果分享给大家。 Openlayers 简介 Openlayers是一个基于Javacript开发,免费、开源的前端地图开…...

跟我学C++中级篇——三五法则

一、三五法则 三五法则&#xff0c;这个叫着有点上头&#xff0c;说实话&#xff0c;这个三五法则&#xff0c;未来会不会变成三六或者四七法则&#xff0c;没人知道&#xff0c;反正现在是三五法则。在《cPrimer》第四版中&#xff0c;叫三法则&#xff0c;在第五版第13.1.4章…...

aardio:用 WebView 模仿 mdict 界面

aardio&#xff1a;用 WebView 模仿 mdict 界面 import win.ui; /*DSG{{*/ mainForm win.form(text"aardio2";right889;bottom467) mainForm.add( button{cls"button";text"go";left335;top22;right399;bottom41;z2}; button2{cls"button…...

linq中的操作符

LINQ&#xff08;Language Integrated Query&#xff09;是一种用于.NET平台的查询语言&#xff0c;用于查询和操作各种数据源&#xff0c;如集合、数据库和XML。LINQ提供了一组标准查询操作符&#xff0c;用于执行各种查询操作。 LINQ&#xff08;Language Integrated Query&…...

数据结构【哈夫曼树】

哈夫曼树 哈夫曼树的概念哈夫曼树的构造构造算法的实现哈夫曼树应用哈夫曼编码哈夫曼编码的算法实现 哈夫曼树的概念 最优二叉树也称哈夫曼 (Huffman) 树&#xff0c;是指对于一组带有确定权值的叶子结点&#xff0c;构造的具有最小带权路径长度的二叉树。权值是指一个与特定结…...

SpringMVC基于SpringBoot的最基础框架搭建——包含数据库连接

SpringMVC基于SpringBoot的最基础框架搭建——包含数据库连接 背景目标依赖配置文件如下项目结构如下相关配置如下启动代码如下Controller如下启动成功接口调用成功 背景 工作做了一段时间&#xff0c;回忆起之前有个公司有线下笔试&#xff0c;要求考生做一个什么功能&#x…...

deepspeed zero3

zero3。它是纵向切分权重&#xff08;intra-layer&#xff0c;每一层的权重切成n块&#xff09;。但是这样会增加通讯时间。你可以根据自己的模型&#xff0c;估算下切分后的通讯量和通讯时间。其次&#xff0c;pipeline并行一般指横向切分权重&#xff08;inter-layer&#xf…...

代驾小程序怎么做

代驾小程序是一款专门为用户提供代驾服务的手机应用程序。它具有以下功能&#xff1a; 1. 预约代驾&#xff1a;代驾小程序允许用户在需要代驾服务时提前进行预约。用户可以选择出发地点、目的地以及预计用车时间&#xff0c;系统会自动匹配最合适的代驾司机&#xff0c;并确保…...

探索 AJAX 技术:实现动态数据交互的前端利器

简介&#xff1a; AJAX&#xff08;Asynchronous JavaScript and XML&#xff09;技术在 Web 前端开发中扮演着重要的角色&#xff0c;它通过异步通信和动态内容更新&#xff0c;为用户带来更好的交互体验。本篇笔记将详细探索 AJAX 技术&#xff0c;并通过生动的代码演示来展示…...