quartz任务调度框架的使用
TaskDemo.java
package org.kevin.javase.timer;
import java.util.TimerTask;
public class TaskDemo extends TimerTask{
public void run() {
System.out.println("timer定时任务执行了");
}
}
package org.kevin.javase.timer;
/**
* @author kevin
*
* 线程等待:使用线程实现定时任务,每秒执行一次定时任务
*/
public class TimerTaskWithThread {
private static final long timeInterval = 1000;
public static void main(String[] args) {
Thread thread = new Thread(timeTask());
thread.start();
}
private static Runnable timeTask() {
return new Runnable() {
public void run() {
while (true) {
// time task
System.out.println("任务执行了");
// timeInterval
try {
Thread.sleep(timeInterval);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
};
}
}
package org.kevin.javase.timer;
import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
/**
* @author kevin 使用timer实现定时任务,每天凌晨三点执行
*/
public class TimerTask02WithTimer {
// 执行频率(每天),毫秒数
private static final long PERIOD_DAY = 24 * 60 * 60 * 1000;
// private static final long PERIOD_DAY = 60 * 1000;
public static void main(String[] args) {
// 设置定时执行任务时间,每天的凌晨三点
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 3);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
Date date = calendar.getTime();
if (date.before(new Date())) {
date = addDay(date, 1);
}
Timer timer = new Timer();
TaskDemo timerDemo = new TaskDemo();
timer.schedule(timerDemo, date, PERIOD_DAY);
}
/**
* 加一天
*
* @param date
* @param num
* @return
*/
public static Date addDay(Date date, int num) {
Calendar startDate = Calendar.getInstance();
startDate.setTime(date);
startDate.add(Calendar.DAY_OF_MONTH, 1);
return startDate.getTime();
}
}
package org.kevin.javase.timer;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
/**
* @author kevin
* 使用Executors实现定时任务(最理想)
* 优点:可以使用线程池进行任务调度,相比于Thread可以设置初始时延
*/
public class TimerTaskWithExecutors {
public static void main(String[] args) {
Runnable runable = new Runnable() {
public void run() {
System.out.println("Executors执行定时任务");
}
};
ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();
service.scheduleWithFixedDelay(runable, 3, 1, TimeUnit.SECONDS);
}
}
Quartz实现。。。。