quart简单使用
来源:互联网 发布:能找主奴的软件 编辑:程序博客网 时间:2024/05/23 02:03
quartz原理
Quartz是一个大名鼎鼎的Java版开源定时调度器,功能强悍,使用方便。
Quartz的原理不是很复杂,只要搞明白几个概念,然后知道如何去启动和关闭一个调度程序即可。
12345678910
1、Job表示一个工作,要执行的具体内容。此接口中只有一个方法void execute(JobExecutionContext context)2、JobDetailJobDetail表示一个具体的可执行的调度程序,Job是这个可执行程调度程序所要执行的内容,另外JobDetail还包含了这个任务调度的方案和策略。3、Trigger代表一个调度参数的配置,什么时候去调。4、Scheduler代表一个调度容器,一个调度容器中可以注册多个JobDetail和Trigger。当Trigger与JobDetail组合,就可以被Scheduler容器调度了。
小案例
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
import org.quartz.*;import org.quartz.impl.StdSchedulerFactory;import java.util.Date;/*** quartz定时器测试*/public class MyJob implements Job {public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {System.out.println(new Date() + ": doing something...");}}class Test {public static void main(String[] args) {//1、创建JobDetial对象JobDetail jobDetail = new JobDetail();//设置工作项jobDetail.setJobClass(MyJob.class);jobDetail.setName("MyJob_1");jobDetail.setGroup("JobGroup_1");//2、创建Trigger对象SimpleTrigger strigger = new SimpleTrigger();strigger.setName("Trigger_1");strigger.setGroup("Trigger_Group_1");strigger.setStartTime(new Date());//设置重复停止时间,并销毁该Trigger对象java.util.Calendar c = java.util.Calendar.getInstance();c.setTimeInMillis(System.currentTimeMillis() + 1000 * 1L);strigger.setEndTime(c.getTime());strigger.setFireInstanceId("Trigger_1_id_001");//设置重复间隔时间strigger.setRepeatInterval(1000 * 1L);//设置重复执行次数strigger.setRepeatCount(3);//3、创建Scheduler对象,并配置JobDetail和Trigger对象SchedulerFactory sf = new StdSchedulerFactory();Scheduler scheduler = null;try {scheduler = sf.getScheduler();scheduler.scheduleJob(jobDetail, strigger);//4、并执行启动、关闭等操作scheduler.start();} catch (SchedulerException e) {e.printStackTrace();}// try {// //关闭调度器// scheduler.shutdown(true);// } catch (SchedulerException e) {// e.printStackTrace();// }}}
运行案例
123
//4、并执行启动、关闭等操作scheduler.start();scheduler.shutdown(true);
结果
123
Thu Jul 23 10:11:50 CST 2009: doing something...Process finished with exit code 0
总结
123456789
1、scheduler是一个计划调度器容器(总部),容器里面可以盛放众多的JobDetail和trigger,当容器启动后,里面的每个JobDetail都会根据trigger按部就班自动去执行。2、JobDetail是一个可执行的工作,它本身可能是有状态的。3、Trigger代表一个调度参数的配置,什么时候去调。4、当JobDetail和Trigger在scheduler容器上注册后,形成了装配好的作业(JobDetail和Trigger所组成的一对儿),就可以伴随容器启动而调度执行了。5、scheduler是个容器,容器中有一个线程池,用来并行调度执行每个作业,这样可以提高容器效率。
在spring 中的应用
引入jar包
12
// https://mvnrepository.com/artifact/org.quartz-scheduler/quartzcompile group: 'org.quartz-scheduler', name: 'quartz', version: '2.3.0'
spring配置文件
1234567891011121314151617181920212223
<!-- 定义一个任务类 --><bean id="myJob" class="com.item1024.quartz.TimeTask"></bean><!-- jobDetail --><bean id="jobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"><property name="targetObject" ref="myJob"></property><property name="targetMethod" value="racWallet"></property><property name="concurrent" value="false" /><!-- 作业不并发调度 false 任务未执行完不会执行下一个任务 --></bean><!-- 定义trigger 触发器 --><bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"><property name="jobDetail" ref="jobDetail"></property><property name="cronExpression" value="*/10 * * * * ?"></property> <!-- 十秒一次 --></bean><bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"><property name="triggers"><list><ref bean="cronTrigger"/></list></property></bean>
任务调度类
12345678910111213141516171819202122232425
package com.item1024.quartz;import com.item1024.bean.TransBean;import com.item1024.constant.TylConstant;import com.item1024.mapper.TransLogMapper;import com.item1024.pojo.TransLog;import com.item1024.service.OpCoinService;import com.item1024.service.UserWalletRacService;import javax.annotation.Resource;import java.util.Date;import java.util.List;/*** @author 阳十三* @email wdful165177@gmail.com* @blog http://www.item1024.com* @date 2017/8/30*/public class TimeTask {public void racWallet() {System.out.println("交易任务开启: ");}}
阅读全文
0 0
- quart简单使用
- Quart 2D 绘制图形简单总结
- Quart 2D 绘制图形简单总结
- spring batch的使用和定时器Quart的使用
- spring batch的使用和定时器Quart的使用
- 框架Quart在Java中任务调度的使用
- quart 总结
- Spring+quart
- quart Spring 配置
- Quart扫描硬盘文件
- spring Quart 中的SchedulerFactory
- spring quart定时任务。
- Quart 2D----------------->CGPathRef
- quart动态定时
- spring整合quart
- iOS Quart 2D ------------> CGContextRef
- Spring+Quart定时器的配置
- quart任务调度框架实战
- 关于产品经理的三个文档(PRD)(三)
- iframe的应用 实现无刷新用户注册
- ld链接器的链接选项(持续)
- Python基础-笔记篇
- Leetcode 221. Maximal Square
- quart简单使用
- 二极管的分类及常用方法
- JAVA常用八大排序算法
- 使用Ajax实现异步导出数据到excel
- Error:Execution failed for task ':app:compileDebugNdk'.
- php岗位招聘模版
- 数组与矩阵---在数组中找到出现次数大于一半(N/K)的数
- 欢迎使用CSDN-markdown编辑器
- Js学习之路六 --- 选项卡、innerHTML