全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

spring中定时任务taskScheduler的详细介绍

前言

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

被执行的类要实现Runnable接口

TaskScheduler接口

TaskScheduler是一个接口,TaskScheduler接口下定义了6个方法


1、schedule(Runnable task, Trigger trigger);

指定一个触发器执行定时任务。可以使用CronTrigger来指定Cron表达式,执行定时任务

 CronTrigger t = new CronTrigger("0 0 10,14,16 * * ?");
 taskScheduler.schedule(this, t);

2、schedule(Runnable task, Date startTime);

指定一个具体时间点执行定时任务,可以动态的指定时间,开启任务。只执行一次。(比Timer好用多了。早发现这接口就好了。。。)

3、scheduleAtFixedRate(Runnable task, long period);

立即执行,循环任务,指定一个执行周期(毫秒计时)

PS:不管上一个周期是否执行完,到时间下个周期就开始执行

4、scheduleAtFixedRate(Runnable task, Date startTime, long period);

指定时间开始执行,循环任务,指定一个间隔周期(毫秒计时)

PS:不管上一个周期是否执行完,到时间下个周期就开始执行

5、scheduleWithFixedDelay(Runnable task, long delay);

立即执行,循环任务,指定一个间隔周期(毫秒计时)

PS:上一个周期执行完,等待delay时间,下个周期开始执行

6、scheduleWithFixedDelay(Runnable task, Date startTime, long delay);

指定时间开始执行,循环任务,指定一个间隔周期(毫秒计时)

PS:上一个周期执行完,等待delay时间,下个周期开始执行

TaskScheduler下有五个实现类


1、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();
 }
}

2、DefaultManagedTaskScheduler

以当前线程执行任务,这是ConcurrentTaskScheduler的子类,添加了JNDI的支持。和ConcurrentTaskScheduler一样的用法,需要使用JNDI可以单独设置

3、ThreadPoolTaskScheduler

TaskScheduler接口的默认实现类,多线程定时任务执行。可以设置执行线程池数(默认一个线程)。

PS:

  1. 使用前必须得先调用initialize() 【初始化方法】
  2. 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();
}
}

4、TimerManagerTaskScheduler

这个没有使用到,就没具体了解,有时间再补充。有了解的欢迎来补充。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。


# spring  # taskscheduler  # 定时任务  # SpringBoot动态定时功能实现方案详解  # Spring动态添加定时任务的实现思路  # spring定时任务(scheduler)的串行、并行执行实现解析  # Spring动态管理定时任务之ThreadPoolTaskScheduler解读  # 下个  # 这是  # 可以使用  # 是一个  # 就开始  # 子类  # 就没  # 可以直接  # 这篇文章  # 带了  # 好用  # 完后  # 众所周知  # 使用这个  # 多线程  # 配置文件  # 单线程  # 早发现  # 就好了  # 有疑问 


相关文章: 天河区网站制作公司,广州天河区如何办理身份证?需要什么资料有预约的网站吗?  如何快速搭建高效简练网站?  如何在景安服务器上快速搭建个人网站?  建站之星会员如何解锁更多建站功能?  建站VPS配置与SEO优化指南:关键词排名提升策略  新网站制作渠道有哪些,跪求一个无线渠道比较强的小说网站,我要发表小说?  如何在Golang中实现微服务服务拆分_Golang微服务拆分与接口管理方法  制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?  黑客如何通过漏洞一步步攻陷网站服务器?  建站主机功能解析:服务器选择与快速搭建指南  C#如何在一个XML文件中查找并替换文本内容  免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?  网站制作需要会哪些技术,建立一个网站要花费多少?  为什么Go需要go mod文件_Go go mod文件作用说明  如何打造高效商业网站?建站目的决定转化率  如何访问已购建站主机并解决登录问题?  建站主机选虚拟主机还是云服务器更好?  制作电商网页,电商供应链怎么做?  制作公司内部网站有哪些,内网如何建网站?  三星网站视频制作教程下载,三星w23网页如何全屏?  北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?  建站主机是什么?如何选择适合的建站主机?  如何基于PHP生成高效IDC网络公司建站源码?  网页设计网站制作软件,microsoft office哪个可以创建网页?  如何配置IIS站点权限与局域网访问?  在线流程图制作网站手机版,谁能推荐几个好的CG原画资源网站么?  简易网站制作视频教程,使用记事本编写一个简单的网页html文件?  网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?  建站主机如何选?高性价比方案全解析  美食网站链接制作教程视频,哪个教做美食的网站比较专业点?  如何在Windows虚拟主机上快速搭建网站?  建站之星下载版如何获取与安装?  大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?  在线教育网站制作平台,山西立德教育官网?  建站之星CMS建站配置指南:模板选择与SEO优化技巧  小说建站VPS选用指南:性能对比、配置优化与建站方案解析  娃派WAP自助建站:免费模板+移动优化,快速打造专业网站  网站微信制作软件,如何制作微信链接?  c# Task.ConfigureAwait(true) 在什么场景下是必须的  再谈Python中的字符串与字符编码(推荐)  中山网站制作网页,中山新生登记系统登记流程?  宝塔面板创建网站无法访问?如何快速排查修复?  油猴 教程,油猴搜脚本为什么会网页无法显示?  ,购物网站怎么盈利呢?  建站之星五站合一营销型网站搭建攻略,流量入口全覆盖优化指南  深圳企业网站制作设计,在深圳如何网上全流程注册公司?  网站制作难吗安全吗,做一个网站需要多久时间?  大同网页,大同瑞慈医院官网?  建站之星安装路径如何正确选择及配置?  如何在IIS管理器中快速创建并配置网站? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。