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); }
}

好了就这样吧

最新文章

  1. Windows Server 2008 R2 密码破解
  2. 【OpenGL游戏开发之二】OpenGL常用API
  3. Java Evaluate Reverse Polish Notation(逆波兰式)
  4. LeanCloud 调研报告
  5. Linux的软件安装(JDK安装,Mysql安装,Tomcat安装)
  6. http缓存浅谈
  7. enable-ssh-key-logon-disable-password-password-less-logon-centos/
  8. hdu1003 Max Sum(最大子串)
  9. go延时队列
  10. wamp下php报错session_start(): open(d:/wamp/tmp\sess_ku776hvb06ko4lv9d11e7mnfj1, O_RDWR) failed: No such file or directory
  11. 安装APK时引发INSTALL_PARSE_FAILED_MANIFEST_MALFORMED错误的几种可能(申明:来源于网络)
  12. SQLServer 索引重建
  13. vi中如何使用cscope来查找函数的定义
  14. python.csv 按行按列读取
  15. 配置Codis-Service主机
  16. maven 下载 源码和javadoc命令(转)
  17. 连接远程linux机器时无法使用matlab gui的解决方案
  18. php and mysql 常用api函数
  19. systemctl start nginx timeout
  20. 机器学习之路:python 网格搜索 并行搜索 GridSearchCV 模型检验方法

热门文章

  1. MYSQL进阶学习笔记四:MySQL存储过程之定义条件,处理过程及存储过程的管理!(视频序号:进阶_11,12)
  2. 一步一步学Silverlight 2系列(14):数据与通信之WCF
  3. HDUoj4857逃生 拓扑排序
  4. python批量读取txt文件为DataFrame
  5. 【hdu 4374】One Hundred Layer
  6. bzoj1925地精部落——数学
  7. SUI使用经验
  8. UVa 11040 Add bricks in the wall (水题递推)
  9. poj3050【dfs】
  10. python __builtins__ memoryview类 (46)