我正在尝试使用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;