java - Java 线程立即终止
问题描述
我正在尝试使用 Java 中的线程进行一些并行 http 调用和数据库写入。问题是在调用 thread.start() 之后,线程并没有调用 run 方法,而是立即进入 TERMINATED 状态。
while (fromIndex < list.size()) {
final int toIndex = fromIndex + batchSize > list.size() ? list.size() : fromIndex + batchSize;
fromIndex += batchSize;
final int fromIndexCopy = fromIndex;
threads[i] = new Thread() {
@Override
public void run(){
processConsumptionHistory(requestContext, list.subList(fromIndexCopy, toIndex), listFinished,
listFailed, listEnd);
markFailedUsage(listFailed);
}
};
threads[i].start();
i++;
}
for (final Thread thread : threads) {
thread.join();
}
为什么线程不运行?有更好的选择吗?
编辑
线程确实开始了,问题是传递的列表是空的。
解决方案
您可能想颠倒这两个语句的顺序:
fromIndex += batchSize;
final int fromIndexCopy = fromIndex;
推荐阅读
- javascript - 如果值已经存在,则 ES6 数组推送和合并
- reactjs - 视觉工作室反应图像路径无法到达
- c++ - (target_)link_libraries 和 (target_)include_directories 之间的区别
- angular - 在 app.component.html 中使用 Angular 元素
- maven - JSTL:c:如果在构建路径中找不到
- c# - OData 导航使用 $expand 而不是 url /path
- excel - 从多维数组打印值
- c++ - 管理多个显示器
- c# - 当输出是数组时如何将matlab转换为c#?
- c# - 在 SQL 数据库的 Entity Framework Core 模型中实现加密