我有一个springboot应用程序,它会收到大量请求。在我的应用程序中,它一次都没有响应。当我检查服务器日志以确定问题时,没有任何内存或任何其他问题。但我看到有一些 java.lang.ArrayIndexOutOfBoundsException
记录。当检查相关代码时,这是一个线程抛出的,它没有被处理。
示例如下(这不是原始代码),
try {
ExecutorService threadPool = Executors.newFixedThreadPool(size);
for(int i = 0; i < size; i++) {
DataController workerThread = new DataController(i, resultsList);
threadPool.execute(workerThread);
}
threadPool.shutdown();
boolean isTerminated = threadPool.awaitTermination(60, TimeUnit.SECONDS);
System.out.println("isTerminated::"+ isTerminated);
}catch (Exception e) {
e.printStackTrace();
}
class DataController implements Runnable {
private int i;
private List<String>[] resultsList;
public DataController(int i, List<String>[] resultsList) {
this.i = i;
this.resultsList = resultsList;
}
@Override
public void run() {
List<String> a = new ArrayList<>();
a.add(String.valueOf(i));
if(i==2) {
i = 2/0;
}
this.resultsList[this.i] = a;
}
}
我的问题是,如果在executorservice线程中有任何异常抛出,是否会发生任何性能问题?如果发生这种情况,那么添加try-catch就足够了吗?
暂无答案!
目前还没有任何答案,快来回答吧!