我有一个Spring Batch作业,有两个分区步骤。我为两个从属步骤配置了单独的ThreadPoolTaskExecutor
,因为我需要不同的池设置。
两个主要步骤 - 将SimpleAsyncTaskExecutor
配置为TaskExecutor
两个从属步骤 - 已配置将ThreadPoolTaskExecutor
分隔为TaskExecutor
我这样做是为了实现并行从属步骤以及从属步骤的并行块。
一旦我的工作完成,我看到在最后一个奴隶步骤中配置的线程池保持挂起,因此工作没有终止。
我正在使用Spring Boot。
我按here中的建议关闭了上下文(ConfigurableApplicationContext
)。
按照建议here执行System.exit(0)
解决了我的问题,但我想知道是否有一种干净的方法可以明确地关闭线程池,或者我是否做了任何错误的配置。
请建议。