在Spring中终止计划的线程

时间:2016-01-10 10:32:01

标签: java spring asynchronous spring-boot scheduled-tasks

Spring @Scheduled注释的默认实现产生单线程任务执行程序。

问题在于,有时方法无法正常停止并释放导致停机的线程。

一种可能的解决方案是实施SchedulingConfigurer界面,如

@SpringBootApplication
@EnableScheduling
class Application implements SchedulingConfigurer {

    static void main(String[] args) {
        SpringApplication.run(Application.class, args)
    }

    @Override
    void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
        taskRegistrar.setScheduler(taskExecutor())
    }

    @Bean(destroyMethod = "shutdown")
    Executor taskExecutor() {
        return Executors.newScheduledThreadPool(100)
    }
}

此解决方案创建了100个线程的安全缓冲区,但无法解决问题。

如何在特定超时后终止方法(使用@Scheduled和cron表达式注释)?

0 个答案:

没有答案