北京市建设工程第四检测所网站,银川建网站,一流的网站建设案例,东莞免费建站公司1. 定时器
项目开发中需要执行一些定时任务#xff0c;比如在凌晨时候#xff0c;更新一些新的信息#xff0c;定时发送邮件等等
1.1. 实现方式
1.1.1. java.util.Timer Java自带的java.util.Timer类#xff0c;可以调度一个java.util.TimerTask任务。这种方式可以让程序…1. 定时器
项目开发中需要执行一些定时任务比如在凌晨时候更新一些新的信息定时发送邮件等等
1.1. 实现方式
1.1.1. java.util.Timer Java自带的java.util.Timer类可以调度一个java.util.TimerTask任务。这种方式可以让程序按照某一个频度执行但不能在指定的时间运行一般用的比较少。 1.1.2. Quartz 使用Quartz这是一个功能比较强大的调度器可以让程序在指定的时间执行也可以按照某一个频度执行配置起来稍显复杂。 1.1.3. Spring Task spring3.0以后自带的task可以将它看成一个轻量级的Quartz而且使用起来比Quartz简单。
1.2 .作业继承方式
一种方式是作业类需要继承特定的作业类基类如Quartz需要继承 org.springframework.scheduling.quartz.quartzJobBean java.util.Timer中需要继承自java.util.TimerTask。 另外一种即是一种普通的java类不需要继承任何基类。 推荐使用第二种方式
2. Spring Task使用方式
2.1 配置方式 2.1.1 spring.xml !--配置定时任务--task:scheduled-taskstask:scheduled refjob1 methodrun fixed-rate5000//task:scheduled-tasksjob1
public class job1 {public void run(){System.out.println(job1.....new Date());}
}
每隔五秒执行一次job1的run
2.1.2 spring.xml 克隆表达式
task:scheduled-taskstask:scheduled refjob1 methodrun cron0/5 * * * * ?//task:scheduled-tasksjob1见2.1.1的 每隔五秒执行一次run方法https://www.pppet.net/ 2.2 注解方式 我们会用到 Scheduled注解在每个方法上使用 Scheduled(fixedRate 2000)或者 Scheduled(cron “0-5 * * ? * *”)配置时间 spring.xml
!--启动定时任务的注解驱动--task:annotation-driven/job2
Component
public class Job2 {Scheduled(fixedRate 2000)public void run1(){System.out.println(job2.....new Date());}
}每两秒运行一次
3 quartz的使用
一般使用上面的spring task即可不用quartz定时任务 3.1 导入依赖 dependencygroupIdorg.quartz-scheduler/groupIdartifactIdquartz/artifactIdversion2.3.2/version/dependencydependencygroupIdorg.springframework/groupIdartifactIdspring-context-support/artifactIdversion5.3.2/version/dependency3.2 spring.xml !-- 线程池 --bean idexecutor classorg.springframework.scheduling.concurrent.ThreadPoolTaskExecutorproperty namecorePoolSize value10 /property namemaxPoolSize value100 /property namequeueCapacity value500 //bean!--FixedRate 定时任务 --bean idquartzJob classcom.wanmait.mavendemo.job.QuartzJob /bean idjobDetail classorg.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBeanproperty nametargetObject refquartzJob /property nametargetMethod valueprint //bean!-- Cron quartz-2.x 的配置 时间调度的两种写法 fixedRate和cron--bean idcronTrigger classorg.springframework.scheduling.quartz.CronTriggerFactoryBean property namejobDetail refjobDetail /property namecronExpression value0/5 * * * * ? //beanbean idsimpleTrigger classorg.springframework.scheduling.quartz.SimpleTriggerFactoryBeanproperty namejobDetail refjobDetail/propertyproperty namestartDelay value0 /!-- 调度工厂实例化后经过 0 秒 开始执行调度 --property namerepeatInterval value2000 /!-- 每 2 秒调度一次 --/bean!-- 调度 看你用哪个 两种选一种 --bean classorg.springframework.scheduling.quartz.SchedulerFactoryBeanproperty nametriggerslist!--ref beansimpleTrigger /--ref beancronTrigger//list/propertyproperty nametaskExecutor refexecutor //bean真正项目时候两种配置写一种就可以了而且一般也使用spring task **3.3 QuartzJob **
public class QuartzJob {public void print(){System.out.println(quartzjob..........new Date());}
}
Springboot的定时任务
在启动类上加EnableScheduling即可开启定时任务 做一个任务类加一个Component注解来被spring管理再在方法上加Scheduled(fixedRate 2000)或者 Scheduled(cron “0-5 * * ? * *”)