首页 > 编程语言 > 详细

spring boot @Scheduled未生效原因以及相关坑

时间:2018-09-30 19:26:02      阅读:813      评论:0      收藏:0      [点我收藏+]

在spring boot中,支持多种定时执行模式(cron, fixRate, fixDelay),在Application或者其他Autoconfig上增加@EnableScheduling注解开启。

然后在指定方法增加@Scheduled注解,如下:

    @Scheduled(cron="0 0 0/1 * * ?")
    public void updateTime() {
        current_log_time_appendix = sdf.format(new Date());
        logger.info("日志文件切换, 切换后为:" + current_log_time_appendix);
    }

 

需要注意的是,如果在多个函数上使用了@Scheduled,那么一定是一个执行完毕,才能排下一个。这往往不是我们想要的效果。此时需要在Scheduling配置类为schedule返回一个预定的线程池,如下:

@Configuration
@EnableScheduling
public class SchedulingConfiguration {
    @Bean(destroyMethod = "shutdown")
    public Executor taskScheduler() {
        return Executors.newScheduledThreadPool(10);
    }
}

完成之后,多个@Scheduled可以并发执行了,最高并发度是3,但是同一个@Schedule不会并发执行。

 

spring boot @Scheduled未生效原因以及相关坑

原文:https://www.cnblogs.com/zhjh256/p/9727495.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!