Quartz使用一 通过getJobDataMap传递数据
2024-09-06 15:55:28
Quartz定时器使用比较广泛,介绍一点简单的使用
上代码:
定义一个Job,执行具体的任务
package org.tonny.quartz; import java.text.SimpleDateFormat;
import java.util.Date; import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException; public class HelloJob implements Job
{ @Override
public void execute(JobExecutionContext context) throws JobExecutionException
{
/**
* 执行具体的任务
*/
// 获取传递的参数
Object param = context.getJobDetail().getJobDataMap().get("data");
System.out.println(format(param.toString()));
} /**
* 格式化输出,
*
* @param info
* @return
*/
private String format(String info)
{
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String time = sdf.format(date); return String.format("%s: The result is %s", time, info);
} }
Job的执行
package org.tonny.quartz; import java.util.HashMap;
import java.util.Map; import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerFactory;
import org.quartz.SimpleScheduleBuilder;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory; public class HelloScheduler
{
public static void main(String[] args) throws Exception
{ // 创建一个JobDetail实例,将该实例与HelloJob Class绑定
JobDetail jobDetail = JobBuilder.newJob(HelloJob.class).withIdentity("HelloJob", "HelloGroup").build();
Map<String, Object> data = new HashMap<String, Object>();
data.put("hello", "quartz");
jobDetail.getJobDataMap().put("data", data); // 创建一个Trigger实例,定义该Job立即执行,并且每隔2秒执行一次
// 注意Trigger中的HelloGroup与JobDetail中虽然名字相同,但两个是不一样的,因为在不同的类空间
Trigger trigger = TriggerBuilder.newTrigger().
withIdentity("HelloTrigger", "HelloGroup")
.withSchedule(SimpleScheduleBuilder
.simpleSchedule()
.withIntervalInSeconds(2)
.repeatForever())
.startNow().build(); // 创建scheduler实例
SchedulerFactory schedulerFactory = new StdSchedulerFactory();
Scheduler scheduler = schedulerFactory.getScheduler(); // 将job和触发器进行关联
scheduler.scheduleJob(jobDetail, trigger);
scheduler.start(); try
{// 主线程等待
Thread.sleep(300000L);
}
catch (Exception e)
{
e.printStackTrace();
} // 关闭调度器
scheduler.shutdown(true); }
}
好了就这样吧
最新文章
- Windows Server 2008 R2 密码破解
- 【OpenGL游戏开发之二】OpenGL常用API
- Java Evaluate Reverse Polish Notation(逆波兰式)
- LeanCloud 调研报告
- Linux的软件安装(JDK安装,Mysql安装,Tomcat安装)
- http缓存浅谈
- enable-ssh-key-logon-disable-password-password-less-logon-centos/
- hdu1003 Max Sum(最大子串)
- go延时队列
- wamp下php报错session_start(): open(d:/wamp/tmp\sess_ku776hvb06ko4lv9d11e7mnfj1, O_RDWR) failed: No such file or directory
- 安装APK时引发INSTALL_PARSE_FAILED_MANIFEST_MALFORMED错误的几种可能(申明:来源于网络)
- SQLServer 索引重建
- vi中如何使用cscope来查找函数的定义
- python.csv 按行按列读取
- 配置Codis-Service主机
- maven 下载 源码和javadoc命令(转)
- 连接远程linux机器时无法使用matlab gui的解决方案
- php and mysql 常用api函数
- systemctl start nginx timeout
- 机器学习之路:python 网格搜索 并行搜索 GridSearchCV 模型检验方法
热门文章
- MYSQL进阶学习笔记四:MySQL存储过程之定义条件,处理过程及存储过程的管理!(视频序号:进阶_11,12)
- 一步一步学Silverlight 2系列(14):数据与通信之WCF
- HDUoj4857逃生 拓扑排序
- python批量读取txt文件为DataFrame
- 【hdu 4374】One Hundred Layer
- bzoj1925地精部落——数学
- SUI使用经验
- UVa 11040 Add bricks in the wall (水题递推)
- poj3050【dfs】
- python __builtins__ memoryview类 (46)