Java线程立即终止

发布时间:2020-07-06 06:22

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

为什么线程不运行?有更好的选择吗?

编辑

线程确实开始使用,问题在于传递的列表为空。

回答1

您可能想颠倒这两个语句的顺序:

fromIndex += batchSize;
final int fromIndexCopy = fromIndex;