java中的定时任务实现的几种方式

来源:互联网 发布:php 工作日志管理系统 编辑:程序博客网 时间:2024/05/22 17:01
quartz任务调度框架的使用TaskDemo.javapackage 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 taskSystem.out.println("任务执行了");// timeIntervaltry {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实现。。。。
 
原创粉丝点击