quartz 立即执行+定时+防止并发+监听Job是否运行状态
2016-07-06 21:51
417 查看
这文章没有新手教程,只有个人一些笔记,新手请下载附件教程:
SimpleRun:
package cn.wa8.qweb.extract.quartz;
import java.util.Date;
import org.quartz.CronTrigger;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.SimpleTrigger;
import org.quartz.Trigger;
import org.quartz.impl.StdScheduler;
import org.quartz.impl.StdSchedulerFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.scheduling.quartz.SchedulerFactoryBean;
import cn.wa8.qweb.extract.action.Extract2DB;
public class SimpleRun {
private static Logger log = LoggerFactory.getLogger(SimpleRun.class);
public void run() throws Exception {
SchedulerFactory schedFact = new org.quartz.impl.StdSchedulerFactory();
Scheduler sched = schedFact.getScheduler();
JobDetail jobDetail = new JobDetail("myJob",null,SimpleJob.class);
SimpleTrigger trigger = new SimpleTrigger("myTrigger",
null,
new Date(),
null,
SimpleTrigger.REPEAT_INDEFINITELY,
30L * 1000L);
sched.scheduleJob(jobDetail, trigger);
//sched.addJobListener(new MyTriggerListener());
SimpleJob.preDate = new Date();
sched.start();
System.out.println("starting");
/**
*
state的值代表该任务触发器的状态:
STATE_BLOCKED 4 // 运行
STATE_COMPLETE 2 //完成那一刻,不过一般不用这个判断Job状态
STATE_ERROR 3 // 错误
STATE_NONE -1 //未知
STATE_NORMAL 0 //正常无任务,用这个判断Job是否在运行
STATE_PAUSED 1 //暂停状态
*/
while (true){
if(4 == sched.getTriggerState("myTrigger", null)){
System.out.println("running");
}else if(0 == sched.getTriggerState("myTrigger", null)){
System.out.println("ending");
}else {
System.out.println("error state:"+sched.getTriggerState("myTrigger", null));
}
try {
Thread.sleep(5*1000);
} catch (Exception e) {
// TODO: handle exception
}
}
}
public static void main(String[] args) {
SimpleRun simpleRun = new SimpleRun();
try {
simpleRun.run();
} catch (Exception e) {
e.printStackTrace();
}
}
}
Simple Job:
import java.util.Date;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import cn.wa8.qweb.extract.action.Extract2DB;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.StatefulJob;
/*Extract2DB extract2db = new Extract2DB();
extract2db.CommonBaseExtract();*/
public class SimpleJob implements StatefulJob{
public static Date preDate ;
public void execute(JobExecutionContext arg0) throws JobExecutionException {
System.out.println("into Job");
Date currentDate = new Date();
Long s = (currentDate.getTime()-preDate.getTime())/1000;
try {
Thread.sleep(10*1000);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(s);
System.out.println("leave Job:"+Thread.currentThread().toString());
preDate =currentDate;
}
}
SimpleRun:
package cn.wa8.qweb.extract.quartz;
import java.util.Date;
import org.quartz.CronTrigger;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.SimpleTrigger;
import org.quartz.Trigger;
import org.quartz.impl.StdScheduler;
import org.quartz.impl.StdSchedulerFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.scheduling.quartz.SchedulerFactoryBean;
import cn.wa8.qweb.extract.action.Extract2DB;
public class SimpleRun {
private static Logger log = LoggerFactory.getLogger(SimpleRun.class);
public void run() throws Exception {
SchedulerFactory schedFact = new org.quartz.impl.StdSchedulerFactory();
Scheduler sched = schedFact.getScheduler();
JobDetail jobDetail = new JobDetail("myJob",null,SimpleJob.class);
SimpleTrigger trigger = new SimpleTrigger("myTrigger",
null,
new Date(),
null,
SimpleTrigger.REPEAT_INDEFINITELY,
30L * 1000L);
sched.scheduleJob(jobDetail, trigger);
//sched.addJobListener(new MyTriggerListener());
SimpleJob.preDate = new Date();
sched.start();
System.out.println("starting");
/**
*
state的值代表该任务触发器的状态:
STATE_BLOCKED 4 // 运行
STATE_COMPLETE 2 //完成那一刻,不过一般不用这个判断Job状态
STATE_ERROR 3 // 错误
STATE_NONE -1 //未知
STATE_NORMAL 0 //正常无任务,用这个判断Job是否在运行
STATE_PAUSED 1 //暂停状态
*/
while (true){
if(4 == sched.getTriggerState("myTrigger", null)){
System.out.println("running");
}else if(0 == sched.getTriggerState("myTrigger", null)){
System.out.println("ending");
}else {
System.out.println("error state:"+sched.getTriggerState("myTrigger", null));
}
try {
Thread.sleep(5*1000);
} catch (Exception e) {
// TODO: handle exception
}
}
}
public static void main(String[] args) {
SimpleRun simpleRun = new SimpleRun();
try {
simpleRun.run();
} catch (Exception e) {
e.printStackTrace();
}
}
}
Simple Job:
import java.util.Date;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import cn.wa8.qweb.extract.action.Extract2DB;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.StatefulJob;
/*Extract2DB extract2db = new Extract2DB();
extract2db.CommonBaseExtract();*/
public class SimpleJob implements StatefulJob{
public static Date preDate ;
public void execute(JobExecutionContext arg0) throws JobExecutionException {
System.out.println("into Job");
Date currentDate = new Date();
Long s = (currentDate.getTime()-preDate.getTime())/1000;
try {
Thread.sleep(10*1000);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(s);
System.out.println("leave Job:"+Thread.currentThread().toString());
preDate =currentDate;
}
}
相关文章推荐
- HTML&CSS三列布局
- codevs 1028 花店橱窗布置 (KM)
- Java基础之解析XML
- 大数据量下高并发同步的讲解
- LCD屏的移植方法
- js中对象的小清新理解02
- Linux下的C语言开发(多线程编程)
- mysql 5.6
- 合并两个有序数组为一个有序数组
- Starting Tomcat v7.0 Server at localhost' has encountered a problem. 如何解决
- JDK安装、配置+AS下载
- Linux内核编译
- 使用 acl 协程编写高并发网络服务
- Android中bitmap图像的缩放
- 欧几里得算法
- JSP——JSTL核心标签(1)
- linux下的C语言开发(线程等待)
- Android数据存储(三)----- SQLite数据库存储
- 一个程序员的陪产经历--写在宝宝百日之际
- Forwar Rendering vs. Deferred Rendering