我在同一个JVM实例中运行了几个spring批处理分区作业。每个都配置为使用3个线程,但每次新作业启动时,我都会在日志中看到SimpleAsyncTaskExecutor
不断增加其线程数。
所以第一份工作显示:
09:53:02.370 [SimpleAsyncTaskExecutor-1] INFO ...
09:53:02.370 [SimpleAsyncTaskExecutor-2] INFO ...
以及下一个工作显示:
09:53:02.370 [SimpleAsyncTaskExecutor-3] INFO ...
09:53:02.370 [SimpleAsyncTaskExecutor-4] INFO ...
我原本期望每个新工作都使用线程1和2而不创建新工作......我每次都关闭工作但是如果需要可以发布代码。
答案 0 :(得分:2)
SimpleAsyncTaskExecutor
不重用线程。此外,SimpleAsyncTaskExecutor
默认情况下会创建无限制的线程。
对于重用线程,您需要使用ThreadPoolTaskExecutor
。
请阅读以下内容以获取更多信息:
https://egkatzioura.com/2017/10/25/spring-and-threads-taskexecutor/
https://egkatzioura.com/2017/10/25/spring-and-async/
https://egkatzioura.com/2017/10/25/spring-and-threads-transactions/