java quartz job_java quartz job 执行时间配置
展开全部
第一步:引包
要使用Quartz,必须要引入以下这几个包:
1、log4j-1.2.16
2、quartz-2.1.7
3、slf4j-api-1.6.1.jar
4、slf4j-log4j12-1.6.1.jar
这些e68a8462616964757a686964616f31333361303064包都在下载的Quartz包里面包含着,因此没有必要为寻找这几个包而头疼。
第二步:创建要被定执行的任务类
这一步也很简单,只需要创建一个实现了org.quartz.Job接口的类,并实现这个接口的唯一一个方法execute(JobExecutionContext arg0) throws JobExecutionException即可。如:
import java.text.SimpleDateFormat;
import java.util.Date;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
public class myJob implements Job {
@Override
public void execute(JobExecutionContext arg0) throws JobExecutionException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
System.out.println(sdf.format(new Date()));
}
}
import java.text.SimpleDateFormat;
import java.util.Date;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
public class myJob implements Job {
@Override
public void execute(JobExecutionContext arg0) throws JobExecutionException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
System.out.println(sdf.format(new Date()));
}
}
这个例子很简单,就不用解说了。
第三步:创建任务调度,并执行
这一步应该算是最难的一步的,但其实是非常简单的,直接上代码
import static org.quartz.CronScheduleBuilder.cronSchedule;
import static org.quartz.JobBuilder.newJob;
import static org.quartz.TriggerBuilder.newTrigger;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.quartz.CronTrigger;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerFactory;
import org.quartz.impl.StdSchedulerFactory;
public class Test {
public void go() throws Exception {
// 首先,必需要取得一个Scheduler的引用
SchedulerFactory sf = new StdSchedulerFactory();
Scheduler sched = sf.getScheduler();
//jobs可以在scheduled的sched.start()方法前被调用
//job 1将每隔20秒执行一次
JobDetail job = newJob(myJob.class).withIdentity("job1", "group1").build();
CronTrigger trigger = newTrigger().withIdentity("trigger1", "group1").withSchedule(cronSchedule("0/20 * * * * ?")).build();
Date ft = sched.scheduleJob(job, trigger);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
System.out.println(job.getKey() + " 已被安排执行于: " + sdf.format(ft) + ",并且以如下重复规则重复执行: " + trigger.getCronExpression());
// job 2将每2分钟执行一次(在该分钟的第15秒)
job = newJob(myJob.class).withIdentity("job2", "group1").build();
trigger = newTrigger().withIdentity("trigger2", "group1").withSchedule(cronSchedule("15 0/2 * * * ?")).build();
ft = sched.scheduleJob(job, trigger);
System.out.println(job.getKey() + " 已被安排执行于: " + sdf.format(ft) + ",并且以如下重复规则重复执行: "+ trigger.getCronExpression());
// 开始执行,start()方法被调用后,计时器就开始工作,计时调度中允许放入N个Job
sched.start();
try {
//主线程等待一分钟
Thread.sleep(60L * 1000L);
} catch (Exception e) {}
//关闭定时调度,定时器不再工作
sched.shutdown(true);
}
public static void main(String[] args) throws Exception {
Test test = new Test();
test.go();
}
}
import static org.quartz.CronScheduleBuilder.cronSchedule;
import static org.quartz.JobBuilder.newJob;
import static org.quartz.TriggerBuilder.newTrigger;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.quartz.CronTrigger;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerFactory;
import org.quartz.impl.StdSchedulerFactory;
public class Test {
public void go() throws Exception {
// 首先,必需要取得一个Scheduler的引用
SchedulerFactory sf = new StdSchedulerFactory();
Scheduler sched = sf.getScheduler();
//jobs可以在scheduled的sched.start()方法前被调用
//job 1将每隔20秒执行一次
JobDetail job = newJob(myJob.class).withIdentity("job1", "group1").build();
CronTrigger trigger = newTrigger().withIdentity("trigger1", "group1").withSchedule(cronSchedule("0/20 * * * * ?")).build();
Date ft = sched.scheduleJob(job, trigger);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
System.out.println(job.getKey() + " 已被安排执行于: " + sdf.format(ft) + ",并且以如下重复规则重复执行: " + trigger.getCronExpression());
// job 2将每2分钟执行一次(在该分钟的第15秒)
job = newJob(myJob.class).withIdentity("job2", "group1").build();
trigger = newTrigger().withIdentity("trigger2", "group1").withSchedule(cronSchedule("15 0/2 * * * ?")).build();
ft = sched.scheduleJob(job, trigger);
System.out.println(job.getKey() + " 已被安排执行于: " + sdf.format(ft) + ",并且以如下重复规则重复执行: "+ trigger.getCronExpression());
// 开始执行,start()方法被调用后,计时器就开始工作,计时调度中允许放入N个Job
sched.start();
try {
//主线程等待一分钟
Thread.sleep(60L * 1000L);
} catch (Exception e) {}
//关闭定时调度,定时器不再工作
sched.shutdown(true);
}
public static void main(String[] args) throws Exception {
Test test = new Test();
test.go();
}
}
OK了,Job1和Job2就会被安排为定时执行了。此时程序是可以执行的了,但是可能会输出WARN级别日志,这是因为没有加log4j的配置文件,加上配置文件,就OK了。这里需要说明的地方只有一个,其它的可以直接Copy到您的项目里面。看代码:
CronTrigger trigger = newTrigger().withIdentity("trigger1", "group1").withSchedule(cronSchedule("0/20 * * * * ?")).build();
CronTrigger trigger = newTrigger().withIdentity("trigger1", "group1").withSchedule(cronSchedule("0/20 * * * * ?")).build();
已赞过
已踩过<
你对这个回答的评价是?
评论
收起
java quartz job_java quartz job 执行时间配置相关推荐
- Java任务调度之Quartz快速入门
首先所谓的任务调度指的是软件系统在从某个时间节点开始,以固定的频率,除去特定的某些时间段,定期执行某项任务,比如可以在某个夜深人静的时候做一些大批量的文件传输.备份等耗费极大资源的工作,那么通过这个概 ...
- (转)Java任务调度框架Quartz入门教程指南(二) 使用job、trigger、schedule调用定时任务...
http://blog.csdn.net/zixiao217/article/details/53044890 读完第一节,我们已经对Quartz有了一个大体的认识,它可以定时帮我们执行一些处理程序, ...
- Java 任务调度框架 Quartz
文章目录 1.Quartz 1.1 引入依赖 <dependency><groupId>org.quartz-scheduler</groupId><arti ...
- Springboot整合Quartz集群部署以及配置Druid数据源
参考链接: https://blog.csdn.net/wangmx1993328/article/details/105441308 https://blog.csdn.net/qq_3966905 ...
- java方法触发器,Quartz.Net任务和触发器实现方法详解
Quartz API Quartz API的主要接口和类如下: IScheduler - 和调度器交互的主要API IJob - 调度器会执行实现这个接口的实例 IJobDetail - 用来定义任务 ...
- 在java中使用quartz_如何在Java中使用Quartz Scheduler框架运行cron作业?
我在Java中使用Quartz Scheduler来运行cron作业 . 这是我第一次使用这个框架来运行cron作业,所以我有些困惑 . 我正在关注这个tutorial以更好地理解如何使用Quartz ...
- Quartz.NET-课程10:配置,资源使用和SchedulerFactory
Quartz以模块化方式构建,因此为了让它运行,需要将多个组件"拼凑"在一起.幸运的是,有一些帮助者可以做到这一点. 在Quartz开始工作之前需要配置的主要组件是: 线程池 作业 ...
- Quartz - 集群Cluster的配置、failOver原理
在采用JDBC-Based JobStore 的前提下,Quartz支持集群部署.每一个Scheduler任务调度服务都可以作为集群中的一个节点,节点之间并不互相通讯,正常情况下每一个节点只知道自己. ...
- 【Quartz】Quartz概述及入门实例
林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka Quartz 在开源任务调度框架中的翘首,它提供了强大任务调度机制,难能可贵的是它同时保持了使 ...
- linux 火狐安装java插件_Linux下Firefox安装配置JDK插件
在Linux下安装了firefox浏览器,版本是2.0.0.20.登录Oracle EBS后打开form,提示要装JDK1.4.2_04,手工安装完之后,PATH也已经设置好了.为什么firefox还 ...
最新文章
- 匿名函数,结合闭包的写法,js对象的案例
- hp designiet 500绘图仪程序_邹军:通过数控宏程序实现刀具寿命管理
- 全国计算机等级考试题库二级C操作题100套(第74套)
- eclipse占用内存过大_Java内存泄漏分析工具Memory Analyzer Tool
- Boost Graph
- 中文语音识别系统搭建流程笔记
- 队列加分项:杨辉三角
- spring整合mybatis(详细)
- Monkey 命令 基本参数介绍
- CentOS 7 配置花生壳(phddns)自启动
- flash实验中需添加的flash.c文件
- ORBSLAM2 文章翻译
- 80286计算机配置,电脑的各种配置给详的细解释.doc
- java有理数类的封装_【Java笔记】有理数的类封装
- 树的双亲表示法(C语言实现)——树的存储结构
- 小想法 | 开源一个自己的Python小项目「Park at ease」停车场管理系统
- 初中计算机表格处理教案,初中信息技术Excel教案设计
- Linux网络配置管理
- Django 2.2:模型M.定义模型
- 无线探针的原理及代码实现
热门文章
- @Transactional注解失效场景之——同类中方法调用,事务失效
- java的复制构造函数_如何从复制赋值运算符调用复制构造函数?
- vs生成解决方案默认路径_交换网络防环协议——STP生成树,太阁实验栈
- matlab相机标定
- C++:使用vector::reserve来避免不必要的重新分配
- C++ 在.h文件中包含头文件和在.cpp文件中包含头文件有什么区别?
- ssm(spring+spring mvc+mybatis+maven)高仿bilibili视频网站项目实例
- 单片机通过蜂鸣器播放任意音乐代码实现(2):音乐单片机代码自动生成
- 安全学习笔记(一)-文件下载以及NC
- 有可直接运营的IPTV/OTT系统ma?