Java架构之定时任务使用场景

  1. Timer
    1. Timer(String name,Boolean isDaemon)设置线程名称,并色泽true时表示以守护线程执行
    2. Schedule(TimerTask,delay)只调度一次延迟delay毫秒后执行
    3. Schedule(timertask,date)调度一次在具体时间执行
    4. Schedule(timertask,delay,perio循环调度,在delay之后开始,每个period执行一次
    5. Schedule(Timertask,date,period)循环,在到了date时间之后开始,每个period执行
    6. Purge清理所有已取消状态的timertask
    7. Cancel取消所有调度
    8. Timer timer=new Timer(“myTimer”)
    9. TimerTask task=new TimerTask(){
    10.    Run(){
    11.       
    12.    }
    13. }
    14. Timer.schedule(task,3000)//可以设其他值
  2. scheduledExecutorservice
    1. ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();

executor.scheduleAtFixedRate(new MyTask(), 0, 3, TimeUnit.SECONDS);每个三秒执行一次

  1. spring task
    1. 在方法上使用@Scheduled设置执行时间
      1. FixedRate 每隔多少时间启动任务,不管任务是否完成
      2. fixedDelay 每次执行任务完成之后间隔多久再次执行
      3. Cron 根据表达式执行
    2. @scheduled(initialDelay=1000)指定第一次执行的延时时间
    3. @EnableScheduling主类启动定时器
    4. @EnableAsync开启异步事件支持,使单线程的定时任务变成并行
      1. @Configuration
      2. @EnableAsync         //开启异步事件的支持
      3. public class AsyncConfig {
      4.      // 此处成员变量应该使用@Value从配置中读取
      5.     private int corePoolSize = 10;
      6.     private int maxPoolSize = 200;
      7.     private int queueCapacity = 10;
      8.     @Bean
      9.     public Executor taskExecutor() {
      10.         ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
      11.         executor.setCorePoolSize(corePoolSize);
      12.         executor.setMaxPoolSize(maxPoolSize);
      13.         executor.setQueueCapacity(queueCapacity);
      14.         executor.initialize();
      15.         return executor;
      16.     }
      17. }
  2. Quartz
    1. 与上一种最大的区别在于可以用calendar来控制哪些时间不执行定时任务
    2. Job 实现job重写execute
    3. jobDetail scheduler.getJobDetail获取jobDetail
    4. Trigger scheduler.getTrigger获取cronTrigger
    5. Scheduler 直接注入scheduler组件,调用start开始执行定时器,getTriggerState获取job的信息,scheduler.rescheduleJob修改某个任务的执行时间,scheduler.paseuseall暂停所有任务,scheduler.pauseJob暂停某个任务,resumeAll恢复某个任务,scheduler.deleteJob删除某个任务,schedulerJob创建任务
    6. 三个常用builder分别创建jobdetail、cronScheduleBuilder、cronTrigger
      1. CronScheduleBuilder
      2. JobBuilder
      3. TriggerBuilder
    7. Calendar
  3. cron字符串
    1. 0~59秒,-*/  0~59分,-*/   0~23时,-*/   1~31日期,-*?/LWC  1-12月,-*/     1-7星期,-*?#/LC    1970-2099年,-*/
    2. 逗号表示多个,星号表示任意值 ,问号只能在日期和星期使用,匹配任意值

下划线表示从起始时间到间隔时间执行一次,L表示当月最后一天L前加数字表示倒数第几天,w表示工作日周一到周五,LW某月最后一个工作日最后一个星期五,

#每个月第几个星期几4#2表示某月的第二个星期三

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值