• Spring 定时之 @Scheduled,你真正了解嘛?


    众所周知,@Scheduled 一个spring定时注解,让定时如此简单。

    这里只想说明以下几个问题 ↓

    问题说明:

    此定时器分为三种类型 ↓

    (1)cron                 到点执行

    (2)fixedRate         间隔多久执行

    (3)fixedDelay        上一次任务后多久执行

    上面的概念很容易理解,通俗易记;但需要明白下面几个场景:

     - 使用cron时,如果设置为每隔1min执行一次,当上一次任务在一分钟之内没有执行完,那下一次任务会阻塞还是会执行?如果会执行什么时候执行,立即执行?

     - 同理,当使用fixedRate时,如果设置为间隔1s执行一次,一个任务在一秒未执行完,下一次是否会阻塞,下一次执行是在什么时候?

     - 多个任务同时使用cron时,他们之间的执行耗时会对其他任务有影响嘛?

     - 多个任务三种模式混用,他们之间的耗时会对其他任务产生影响嘛?

    问题答案1、2答案:

    弄明白问题1、2只需要看下面这张图-三种定时任务执行周期图:

     引用说明出处,此图借鉴于 https://www.cnblogs.com/zouhong/p/11332126.html

    问题3、4答案:

      多个任务使用cron或者多任务混合使用三种定时类型,他们之间都是会互相影响的;eg:一个任务在执行,另一个任务即使到了执行时间也需等待前一个任务执行完再执行,因为@Scheduled 定时任务是单线程的,截图为证:

     所以如果多个任务之间不想互相影响,可以加大线程数,具体数量依任务数而定,Spring 1.5.8配置代码如下(其他版本可能不同):

         @Bean
         public TaskScheduler taskScheduler() {
              ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler();
              taskScheduler.setPoolSize(6);
              return taskScheduler;
         }
  • 相关阅读:
    手动渗透测试漏洞
    博弈论一 [ 巴什游戏 ]
    [Error]EOL while scanning string literal
    Swift
    Swift
    Swift
    Swift
    Swift
    Swift
    Swift
  • 原文地址:https://www.cnblogs.com/lzj123/p/12024668.html
Copyright © 2020-2023  润新知