1. 程式人生 > >Quartz 定時任務框 簡單使用

Quartz 定時任務框 簡單使用

下載 quartz 框架地址:http://www.quartz-scheduler.org/downloads/

用到的jar包:1.quartz-2.2.3.jar

                         2.log4j-1.2.16.jar

                         3.slf4j-api-1.7.7.jar

                         4.slf4j.log4j12-1.7.7.jar


任務處理類:

    

public class SyncNewsController implements Job {
    private String TAG="SyncNewsController";
    private String endkey="";
    private String newkey="";
    private int pageSize;
    private int page=1;
    private SyncNewsDao mNewsDao;

    @Override
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        Log.i(TAG,"execute=="+System.currentTimeMillis());


    }
}

執行類:

  

    public static void main(String[] arg){
         startCronSchedule();

    }
    /** 大間隔執行 */
    private void startCronSchedule() {
        try {
            Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
            JobDetail jobDetail = JobBuilder.newJob(SyncNewsController.class).withIdentity("Cronjob1_1", "CronGroup1").build();
            CronScheduleBuilder builder = CronScheduleBuilder.cronSchedule("0 36 17 * * ?");
            CronTrigger cornTrigger = TriggerBuilder.newTrigger().withIdentity("Crontrigger1_1", "CronGroup1").startNow().withSchedule(builder).startNow().build();
            scheduler.scheduleJob(jobDetail, cornTrigger);
            scheduler.start();
        } catch (SchedulerException e) {
            e.printStackTrace();
        }
    }
    /** 小間隔執行 */
    public void startSimpleSchedule() {
        try {
            // 1、建立Scheduler
            Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
            // 2、定義一個Trigger
            SimpleScheduleBuilder builder = SimpleScheduleBuilder
                    .simpleSchedule()
                    // 設定間隔執行時間
                    .withIntervalInHours(1)
                    // 設定執行次數
                    .repeatForever();

            Trigger trigger = TriggerBuilder.newTrigger()
                    .withIdentity("Simpletrigger1_1", "SimpleGroup1")
                    .startNow()
                    .withSchedule(builder)
                    .build();

            // 3、建立一個JobDetail例項,指定Quartz
            JobDetail jobDetail = JobBuilder.newJob(SyncNewsController.class).withIdentity("Simplejob1_1", "SimpleGroup1").build();

            // 4、排程執行
            scheduler.scheduleJob(jobDetail, trigger);
            scheduler.start();
        } catch (SchedulerException e) {
            e.printStackTrace();
        }
    }

 
 
時間定義格式:

0 0 12 * * ? 	每天中午 12 點
0 15 10 ? * * 	每天上午 10 點 15 分
0 15 10 * * ? 	每天上午 10 點 15 分
0 15 10 * * ? * 	每天上午 10 點 15 分
0 15 10 * * ? 2005 	在 2005 年裡的每天上午 10 點 15 分
0 * 14 * * ? 	每天下午 2 點到下午 2 點 59 分的每一分鐘
0 0/5 14 * * ? 	每天下午 2 點到 2 點 55 分每隔 5 分鐘
0 0/5 14,18 * * ? 	每天下午 2 點到 2 點 55 分, 下午 6 點到 6 點 55 分, 每隔 5 分鐘
0 0-5 14 * * ? 	每天下午 2 點到 2 點 5 分的每一分鐘
0 10,44 14 ? 3 WED 	3 月每週三的下午 2 點 10 分和下午 2 點 44 分
0 15 10 ? * MON-FRI 	每週一到週五的上午 10 點 15 分
0 15 10 15 * ? 	每月 15 號的上午 10 點 15 分
0 15 10 L * ? 	每月最後一天的上午 10 點 15 分
0 15 10 L-2 * ? 	每月最後兩天的上午10點15分
0 15 10 ? * 6L 	每月的最後一個星期五的上午 10 點 15 分
0 15 10 ? * 6L 2002-2005 	2002 年到 2005 年每個月的最後一個星期五的上午 10 點 15 分
0 15 10 ? * 6#3 	每月的第三個星期五的上午 10 點 15 分
0 0 12 1/5 * ? 	每月的 1 號開始每隔 5 天的中午 12 點
0 11 11 11 11 ? 	每年 11 月 11 號上午 11 點 11 分