java FixedThreadPool未正确执行
我已经创建了大小为100的新FixedThreadPool,并在其上启动了500个线程。 所有线程都正确启动,并且都需要足够的时间。但执行器只是关闭了一些线程生成的输出,而大多数都没有。 我还使用max value调用了shutdown()和waittermination(),因此它必须等到所有线程完成。 当任务数量较少时(例如20或30个任务,池大小与100个任务相同),这种方法可以很好地工作。 线程中的逻辑是对列表进行操作,并将该列表转换为xlsx文件。 如果有人面临类似问题,请分享任何信息
# 1 楼答案
将任务提交给ExecutorService的一个常见错误是忽略发生的任何错误。你必须要么
.submit(task)
返回的每个Future上获取()以查看任何错误或错误try { } catch (Throwable t)
块中的所有错误李>最有可能发生的错误是导致所有任务失败
顺便说一句,如果你有一个CPU限制的任务,线程的最佳数量可能是你的CPU数量
更简单的方法可能是使用parallelStream,例如