• spring中@Scheduled定时任务执行时间不准确问题


    一、问题背景

    使用@Scheduled创建两个定时任务,其中一个1s执行。另一个1min执行。按分钟执行的出现了bug,我设定的规则如下:

    @Async
    @Scheduled(cron = "0 0/1 * * * ?")
    public void workOfMin() {
        
        logger.info("---------》work start...");
    
    }
    

    实际执行的时间不是每分钟00秒,而是随机的01~20之间。比如:每分钟的03、04、11秒执行任务。但是我要的结果是每分钟的00秒执行,必须精确。

    二、解决方案

    @SpringBootApplication
    @EnableJpaRepositories(repositoryFactoryBeanClass = MyRepositoryFactoryBean.class)
    @EnableTransactionManagement
    @EnableAutoConfiguration
    @EnableScheduling
    @Configuration
    @EnableDiscoveryClient
    @EnableFeignClients
    @EnableCaching
    public class Application extends DefaultApplication {
        
        /**
         *
         *〈简述〉修复同一时间无法执行多个 定时任务问题
         *〈详细描述〉
         */
        @Bean
        public TaskScheduler taskScheduler() {
            ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler();
            taskScheduler.setPoolSize(50);
            return taskScheduler;
        }
        
        /**
         * 〈简述〉应用启动入口
         * 〈详细描述〉
         *
         * @param args String[] 参数
         */
        public static void main(String[] args) {
            SpringApplication.run(Application.class, args);
        }
    
    }
    

     创建一个@Bean方法,设置poolSize。原因是spring计划任务线程阻塞导致。

    作者:森林木马

    -------------------------------------------

    特此声明:所有评论和私信都会在第一时间回复。也欢迎朋友们指正错误,共同进步!

    如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!

    个性签名:好记性不如勤随笔,好随笔还请多关注!

  • 相关阅读:
    java final keyword
    2014暑假集训组队赛01
    簡單SQL存儲過程實例
    amazeui学习笔记--css(布局相关3)--辅助类Utility
    amazeui学习笔记--css(布局相关2)--等分网格 AVG Grid
    amazeui学习笔记--css(布局相关1)--网格Grid
    css中hack是什么
    amazeui学习笔记--css(基本样式4)--打印样式Print
    什么是字体锯齿和反锯齿
    衬线字体和非衬线字体区别
  • 原文地址:https://www.cnblogs.com/owenma/p/14299590.html
Copyright © 2020-2023  润新知