spring 定时任务 taskScheduler详解

2023-11-29 01:18

本文主要是介绍spring 定时任务 taskScheduler详解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

spring 3.0版本后,自带了一个定时任务工具,而且使用简单方便,不用配置文件,可以动态改变执行状态。也可以使用cron表达式设置定时任务。

1、被执行的类要实现Runnable接口

2、TaskScheduler 任务调度接口

TaskScheduler是一个接口

TaskScheduler接口下定义了6个方法

  • schedule(Runnable task, Trigger trigger);
    指定一个触发器执行定时任务。可以使用CronTrigger来指定Cron表达式,执行定时任务

     CronTrigger t = new CronTrigger("0 0 10,14,16 * * ?");taskScheduler.schedule(this, t);
  • schedule(Runnable task, Date startTime);
    指定一个具体时间点执行定时任务,可以动态的指定时间,开启任务。只执行一次。(比Timer好用多了。早发现这接口就好了。。。)
  • scheduleAtFixedRate(Runnable task, long period);
    立即执行,循环任务,指定一个执行周期(毫秒计时)
    PS:不管上一个周期是否执行完,到时间下个周期就开始执行
  • scheduleAtFixedRate(Runnable task, Date startTime, long period);
    指定时间开始执行,循环任务,指定一个间隔周期(毫秒计时)
    PS:不管上一个周期是否执行完,到时间下个周期就开始执行
  • scheduleWithFixedDelay(Runnable task, long delay);
    立即执行,循环任务,指定一个间隔周期(毫秒计时)
    PS:上一个周期执行完,等待delay时间,下个周期开始执行
  • scheduleWithFixedDelay(Runnable task, Date startTime, long delay);
    指定时间开始执行,循环任务,指定一个间隔周期(毫秒计时)
    PS:上一个周期执行完,等待delay时间,下个周期开始执行

3、TaskScheduler下有五个实现类

  • ConcurrentTaskScheduler
    以当前线程执行任务。如果任务简单,可以直接使用这个类来执行。快捷方便。
    PS:这是单线程运行

    public class LocTest implements Runnable {private ConcurrentTaskScheduler tpts = new ConcurrentTaskScheduler();private void start() {
    tpts.schedule(this, new Date());}public void run() {
    Thread ct = Thread.currentThread();
    System.out.println("current id:"+ct.getId());
    System.out.println("current name:"+ct.getName());}public static void main(String[] args) {
    new LocTest().start();}
    }
  • DefaultManagedTaskScheduler
    以当前线程执行任务,这是ConcurrentTaskScheduler的子类,添加了JNDI的支持。和ConcurrentTaskScheduler一样的用法,需要使用JNDI可以单独设置
  • ThreadPoolTaskScheduler
    TaskScheduler接口的默认实现类,多线程定时任务执行。可以设置执行线程池数(默认一个线程)。
    PS:
    • 使用前必须得先调用initialize()【初始化方法】
    • 有shutDown()方法,执行完后可以关闭线程

      public class LocTest implements Runnable {
      private ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler();
      private void start() {
      taskScheduler.setPoolSize(10);
      //必须得先初始化,才能使用
      taskScheduler.initialize();
      taskScheduler.schedule(this, new Date());
      }
      public void run() {
      Thread ct = Thread.currentThread();
      System.out.println("current id:"+ct.getId());
      System.out.println("current name:"+ct.getName());
      }
      public static void main(String[] args) {
      new LocTest().start();
      }
      }
  • TimerManagerTaskScheduler
    这个没有使用到,就没具体了解,有时间再补充。有了解的欢迎来补充。

这篇关于spring 定时任务 taskScheduler详解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/430929

相关文章

Vue中动态权限到按钮的完整实现方案详解

《Vue中动态权限到按钮的完整实现方案详解》这篇文章主要为大家详细介绍了Vue如何在现有方案的基础上加入对路由的增、删、改、查权限控制,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、数据库设计扩展1.1 修改路由表(routes)1.2 修改角色与路由权限表(role_routes)二、后端接口设计

MySQL 日期时间格式化函数 DATE_FORMAT() 的使用示例详解

《MySQL日期时间格式化函数DATE_FORMAT()的使用示例详解》`DATE_FORMAT()`是MySQL中用于格式化日期时间的函数,本文详细介绍了其语法、格式化字符串的含义以及常见日期... 目录一、DATE_FORMAT()语法二、格式化字符串详解三、常见日期时间格式组合四、业务场景五、总结一、

Spring Cloud Hystrix原理与注意事项小结

《SpringCloudHystrix原理与注意事项小结》本文介绍了Hystrix的基本概念、工作原理以及其在实际开发中的应用方式,通过对Hystrix的深入学习,开发者可以在分布式系统中实现精细... 目录一、Spring Cloud Hystrix概述和设计目标(一)Spring Cloud Hystr

Qt实现发送HTTP请求的示例详解

《Qt实现发送HTTP请求的示例详解》这篇文章主要为大家详细介绍了如何通过Qt实现发送HTTP请求,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、添加network模块2、包含改头文件3、创建网络访问管理器4、创建接口5、创建网络请求对象6、创建一个回复对

Spring Boot整合消息队列RabbitMQ的实现示例

《SpringBoot整合消息队列RabbitMQ的实现示例》本文主要介绍了SpringBoot整合消息队列RabbitMQ的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的... 目录RabbitMQ 简介与安装1. RabbitMQ 简介2. RabbitMQ 安装Spring

Apache伪静态(Rewrite).htaccess文件详解与配置技巧

《Apache伪静态(Rewrite).htaccess文件详解与配置技巧》Apache伪静态(Rewrite).htaccess是一个纯文本文件,它里面存放着Apache服务器配置相关的指令,主要的... 一、.htAccess的基本作用.htaccess是一个纯文本文件,它里面存放着Apache服务器

springMVC返回Http响应的实现

《springMVC返回Http响应的实现》本文主要介绍了在SpringBoot中使用@Controller、@ResponseBody和@RestController注解进行HTTP响应返回的方法,... 目录一、返回页面二、@Controller和@ResponseBody与RestController

JAVA集成本地部署的DeepSeek的图文教程

《JAVA集成本地部署的DeepSeek的图文教程》本文主要介绍了JAVA集成本地部署的DeepSeek的图文教程,包含配置环境变量及下载DeepSeek-R1模型并启动,具有一定的参考价值,感兴趣的... 目录一、下载部署DeepSeek1.下载ollama2.下载DeepSeek-R1模型并启动 二、J

springboot rocketmq配置生产者和消息者的步骤

《springbootrocketmq配置生产者和消息者的步骤》本文介绍了如何在SpringBoot中集成RocketMQ,包括添加依赖、配置application.yml、创建生产者和消费者,并展... 目录1. 添加依赖2. 配置application.yml3. 创建生产者4. 创建消费者5. 使用在

Spring Retry 实现乐观锁重试实践记录

《SpringRetry实现乐观锁重试实践记录》本文介绍了在秒杀商品SKU表中使用乐观锁和MybatisPlus配置乐观锁的方法,并分析了测试环境和生产环境的隔离级别对乐观锁的影响,通过简单验证,... 目录一、场景分析 二、简单验证 2.1、可重复读 2.2、读已提交 三、最佳实践 3.1、配置重试模板