定时任务(TimerTask)学习

java中有关但是任务api——java.util.Timer
简单定时任务:

public class TimerTaskApp {
    public static void main(String[] args) {
        Timer timer = new Timer();
        TimerTask task = new TimerTask() {
            @Override
            public void run() {
                System.out.println("timer task run...");
            }
        };
        timer.schedule(task,0,2000);
    }
}

流行定时任务框架:Quartz、Spring Task
工作/任务(job)、工作明细(JobDetail,指定工作)、触发器(Trigger ,绑定工作明细)、调度器(Scheduler)

一.Quartz

  1. 依赖:spring-boot-starter-quartz
  2. 自定义任务类,继承:QuartzJobBean,继承抽象方法,
  3. 配置类:定义工作明细和触发器方法
package com.itheima.config;

import com.itheima.quartz.MyQuartz;
import org.quartz.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class QuartzConfig {
    @Bean
    public JobDetail printJobDetail(){
        //绑定具体的工作,storeDurably持久化操作
        return JobBuilder
                .newJob(自定义任务类.class)
                .storeDurably()
                .build();
    }
    @Bean
    public Trigger printJobTrigger(){
        ScheduleBuilder schedBuilder = CronScheduleBuilder.cronSchedule("0/5 * * * * ?");//分/秒,时/分,日/时,月/日,年/月,星期
        //绑定对应的工作明细
        return TriggerBuilder.newTrigger().forJob(printJobDetail()).withSchedule(schedBuilder).build();
    }
}

为解决工作,指定明细,触发器之间的依赖。提出调度器(Scheduled)
二、Spring Task

  1. 注解:springboot启动类:@EnableScheduling
  2. 定时任务/方法上注解:@Scheduled
@Scheduled(cron = "0/1 * * * * ?")
    public void print(){
        System.out.println(Thread.currentThread().getName()+" :spring task run...");
    }

定时任务的详细配置application.yml
调试用:

spring:
  task:
    scheduling:
      pool:
        #任务线程池大小 默认1
        size: 1
      #调度小池名称前缀 默认scheduling_
      thread-name-prefix: spring_tasks_
      #关闭操作
      shutdown:
        #线程池关闭时等待所有任务完成
        await-termination: false
        # 调度线程池关闭前最大等待时间
        await-termination-period: 10s
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值