zoukankan      html  css  js  c++  java
  • 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;
         }
  • 相关阅读:
    字节
    服务器每个网站占用资源
    in exists 条件查询
    NUnit2.0详细使用方法
    敏捷方法之极限编程(XP)和 Scrum区别
    学习内容及计划
    关于查看网页源文件不显示源代码(打开的是桌面文件夹)的问题
    用JS取float型 小数点 后两位
    [转]什么是CMMI?
    六月新版微软一站式示例代码库发布 新增20个Windows示例代码
  • 原文地址:https://www.cnblogs.com/lzj123/p/12024668.html
Copyright © 2011-2022 走看看