zoukankan      html  css  js  c++  java
  • Quartz使用一 通过getJobDataMap传递数据

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

    好了就这样吧

  • 相关阅读:
    Java实现 洛谷 P1064 金明的预算方案
    (Java实现) 洛谷 P1605 迷宫
    (Java实现) 洛谷 P1031 均分纸牌
    Java实现 洛谷 P1060 开心的金明
    三代名将却三代悲剧(绝对不要轻易招惹“关系户”,要学会适应规则)
    simulate windows postmessage or keydown
    qt 拖拽 修改大小(使用了nativeEvent和winEvent)
    QT下资源使用和资源占用…(可以动态加载资源文件,这样不占内存)
    qt实现头像上传功能(写了4个类,朝十晚八的博客,非常好)
    自定义ModelValidatorProvider
  • 原文地址:https://www.cnblogs.com/supertonny/p/7163809.html
Copyright © 2011-2022 走看看