首页 > 代码库 > Quartz使用
Quartz使用
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 = http://www.mamicode.com/new HashMap();"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); } }
好了就这样吧
Quartz使用
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。