定时任务ScheduledExecutorService与Spring Task的实现方式

1.ScheduledExecutorService 实现定时任务的代码示例如下:

  1. 开启定时任务只需要在 Spring Boot 的启动类上声明 @EnableScheduling 即可,实现代码如下:
@SpringBootApplication
@EnableScheduling // 开启定时任务
public class DemoApplication {
    // do someing
}
  1. 添加定时任务
@Slf4j
@Component // 把此类托管给 Spring,不能省略
public class Main implements ApplicationRunner {

    @Resource
    private TaskService taskService; //定时任务

    @Override
    public void run(ApplicationArguments args) {
        //定时任务线程池
        ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(10);
        // 第二个参数为首次执行的延时时间,第三个参数为定时执行的间隔时间,第四个参数为时间单位
        //延时0秒,每三秒执行一次
        scheduledExecutorService.scheduleAtFixedRate(taskService, 0, 3, TimeUnit.SECONDS);
    }
}
  1. 定时任务业务逻辑:
@Slf4j
@Service
public class TaskService implements Runnable{
    @Override
    public void run() {
        // 定时任务业务逻辑
        System.out.println(LocalDateTime.now() +"taskService run!!");
    }
}

程序执行结果如下:

2021-05-25T08:48:40.490taskService run!!
2021-05-25T08:48:43.483taskService run!!
2021-05-25T08:48:46.478taskService run!!
2021-05-25T08:48:49.481taskService run!!

2.Spring Task

  1. 开启定时任务

自动开启

  1. 添加定时任务
@Slf4j
@Component
public class Main{

    @Resource
    private TaskService taskService; //定时任务
    @Scheduled(cron = "0/5 * * * * ?") // cron 表达式,每5秒执行一次
    public void doTask(){
        this.taskService.run();
    }
}

  1. 执行结果如下:
2021-05-25T08:58:20.404taskService run!!
2021-05-25T08:58:26.505taskService run!!
2021-05-25T08:58:30.011taskService run!!
2021-05-25T08:58:35.770taskService run!!

注意:定时任务是自动触发的无需手动干预,也就是说 Spring Boot 启动后会自动加载并执行定时任务。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值