java中定时任务Job的使用总结

您所在的位置:网站首页 java怎么做定时任务 java中定时任务Job的使用总结

java中定时任务Job的使用总结

2024-03-16 18:48| 来源: 网络整理| 查看: 265

Job的原理,参考: http://www.cnblogs.com/Dorae/p/9357180.html

job的使用,参考: https://blog.csdn.net/u010996565/article/details/78591054 https://blog.csdn.net/hfut_wowo/article/details/64434664

实例,创建一个job,每天凌晨3点执行: import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import javax.annotation.Resource; import org.quartz.CronScheduleBuilder; import org.quartz.CronTrigger; import org.quartz.Job; import org.quartz.JobBuilder; import org.quartz.JobDetail; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.quartz.Scheduler; import org.quartz.TriggerBuilder; import org.quartz.impl.StdSchedulerFactory; public class SumFinancialJob implements Job { public SumFinancialJob() { } public void execute(JobExecutionContext context) throws JobExecutionException { //得到一个Calendar实例 Calendar calendar = Calendar.getInstance(); //calendar的日期设为今天 calendar.setTime(new Date()); //设置calendar为昨天 calendar.add(Calendar.DATE, -1); //calendar.add(Calendar.YEAR, -1);//前一年 //calendar.add(Calendar.MONTH, -1);//前一月 Date yesterday = calendar.getTime(); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //前一天的字符串 String pre = simpleDateFormat.format(yesterday); //前一天凌晨0点的字符串 String startTime = pre.substring(0, 10) + " 00:00:00"; //前一天午夜24点的字符串 String endTime = pre.substring(0, 10) + " 24:00:00"; SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); //获取前一天的日期字符串 String preDate = dateFormat.format(yesterday); //获取外部传来的参数 //JobDataMap map = context.getJobDetail().getJobDataMap(); //String ywbDate = map.getString("ywbDate"); 进行操作…… } public static void schedulerJob() { try { // 创建一个jobDetail的实例 quartz 2.xx版本 JobDetail jobDetail = JobBuilder.newJob(SumFinancialJob.class).withIdentity("train-financial-Job").build(); // 创建一个Trigger触发器的实例,每天凌晨3点运行 CronTrigger trigger = TriggerBuilder.newTrigger().withIdentity("train-financial-Trigger").startNow().withSchedule(CronScheduleBuilder.cronSchedule("0 0 3 * * ?")).build(); // 创建schedule实例 Scheduler scheduler = new StdSchedulerFactory().getScheduler(); // 添加一个job scheduler.scheduleJob(jobDetail, trigger); // 开启一个job scheduler.start(); } catch (Exception e) { System.err.println("创建定时任务失败" + e); } } } job的使用实例参考:

(https://blog.csdn.net/u010996565/article/details/78591054 )

package com.qua.test; import java.util.Date; import org.quartz.CronTrigger; import org.quartz.JobDataMap; import org.quartz.JobDetail; import org.quartz.Scheduler; import org.quartz.SchedulerFactory; import org.quartz.SimpleTrigger; import org.quartz.impl.StdSchedulerFactory; import com.qua.job.PlanJob; public class Test { public static void main(String[] args) throws Exception { //创建job JobDetail detail=new JobDetail("myJob", "myGroup", PlanJob.class); //向程序内部传入参数 JobDataMap map=detail.getJobDataMap(); map.put("username", "张三"); //这里的触犯器是规定的时间间隔内做的事,不是很常用 // //创建触发器 // SimpleTrigger trigger=new SimpleTrigger("myTrigger",SimpleTrigger.REPEAT_INDEFINITELY, 3000); // //设置开始执行时间 // trigger.setStartTime(new Date(System.currentTimeMillis()+1000)); //下面这个是在指定时间做的事,在日常开发中是比较常用的 //指定时间 CronTrigger trigger=new CronTrigger("myCron", "myGroup", "40 10 11 * * ?");//这里有三个参数(1.触发器的名称2.触发器的组3.时间表达式) //创建调度工厂 SchedulerFactory factory=new StdSchedulerFactory(); //创建调度器 Scheduler scheduler=factory.getScheduler(); //绑定job 和触发器 scheduler.scheduleJob(detail, trigger); //启动 scheduler.start(); // //停止定时任务 // scheduler.shutdown(); } } Cron表示式示例

(https://blog.csdn.net/zzq900503/article/details/38020573/)

"0 0 12 * * ? "

每天12点运行

“0 15 10 ? * *”

每天10:15运行

“0 15 10 * * ?”

每天10:15运行

“0 15 10 * * ? *”

每天10:15运行

“0 15 10 * * ? 2008”

在2008年的每天10:15运行

“0 * 14 * * ?”

每天14点到15点之间每分钟运行一次,开始于14:00,结束于14:59。

“0 0/5 14 * * ?”

每天14点到15点每5分钟运行一次,开始于14:00,结束于14:55。

“0 0/5 14,18 * * ?”

每天14点到15点每5分钟运行一次,此外每天18点到19点每5钟也运行一次。

“0 0-5 14 * * ?”

每天14:00点到14:05,每分钟运行一次。

“0 10,44 14 ? 3 WED”

3月每周三的14:10分到14:44,每分钟运行一次。

“0 15 10 ? * MON-FRI”

每周一,二,三,四,五的10:15分运行。

“0 15 10 15 * ?”

每月15日10:15分运行。

“0 15 10 L * ?”

每月最后一天10:15分运行。

“0 15 10 ? * 6L”

每月最后一个星期五10:15分运行。

“0 15 10 ? * 6L 2007-2009”

在2007,2008,2009年每个月的最后一个星期五的10:15分运行。

“0 15 10 ? * 6#3”

每月第三个星期五的10:15分运行。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3