Quartz入門1

3334 ワード

Quartzのいくつかのコアのインタフェースとクラスは次のとおりです.
Jobインタフェース:自分で書いた「タイミングプログラム」でこのインタフェースを実現するvoid execute(JobExecutionContext arg 0)メソッドです.JobにはステータスのあるStatefulJobインタフェースもあります.前のジョブの実行後、その実行結果に基づいて次のジョブの実行を行う必要がある場合は、このインタフェースを実現する必要があります. 
Trigger抽象クラス:スケジューリングクラス(Scheduler)は、時間の経過時にこのクラスを呼び出し、triggerクラスによって指定されたタイミングプログラムを呼び出す. 
Quertzには、SimpleTrigger、CronTriggerの2種類のトリガが用意されています.前者は、比較的簡単なタイミング機能を実現するために用いられ、例えば、何時に開始し、何時に終了し、どのくらいの時間を隔てて実行し、何回実行するかなど、後者は式を用いてタイミング機能を記述するため、毎月の最後の金曜日、毎週の木曜日など、比較的複雑なタイミング記述に適用される. 
JobDetailクラス:Name,Group,JobDataMapなど、特定のタイミングプログラムの詳細な説明. 
J obExecutionContextクラス:タイミングプログラムで実行されるrun-timeのコンテキスト環境、現在実行されているJobの名前、構成されたパラメータなどを得るために使用されます. 
JobDataMapクラス:1つのジョブを記述するためのパラメータである、パラメータはString、floatなどの任意の基本タイプであってもよいし、あるオブジェクトの参照であってもよい. 
JobListener,TriggerListenerインタフェース:フリップフロップ状態とジョブスイープ状態をリスニングし、クローズアップ状態で対応する操作を実行します. 
JobStoreクラス:アドインプログラムはどこで実行されますか.オプションはメモリ、データベースです.
次に、quartz-1.8.4.jarを追加する必要があるプロジェクトの例を示します.
1、タスククラス
package com.supan.test;
import java.util.Date;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SimpleTrigger;
import org.quartz.impl.StdSchedulerFactory;
public class QuartzTest {
	public static void main(String[] args) {
		QuartzTest test = new QuartzTest();
        try{  
            test.startSchedule();  
        }catch(Exception e){  
            e.printStackTrace();  
        } 
	}
	public void startSchedule()throws Exception{
		//     
        Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler(); 
        //       ,    
        JobDetail jobDetail = new JobDetail("testJob", Scheduler.DEFAULT_GROUP, QuartzTestJob.class);
        //       
        jobDetail.getJobDataMap().put("name","testJob");    
        //             
        long end = System.currentTimeMillis() + 99000L;    
        //     。  10 , 3     , 9    
        SimpleTrigger trigger = new SimpleTrigger("test",null,new Date(),new Date(end),10,3000L);
        //                
        scheduler.scheduleJob(jobDetail, trigger);    
        scheduler.start(); 
	}
}

2、テストクラスのスケジュール
package com.supan.test;
import java.util.Date;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
public class QuartzTestJob implements Job {
	private boolean isRunning = false;
	public void execute(JobExecutionContext context) throws JobExecutionException {
        String name = context.getJobDetail().getJobDataMap().getString("name");
        if(!isRunning){
        	while(true){
        		isRunning = true;
        		System.out.println("        。。。。" + name + "dddd" + new Date());
        		try {
					Thread.currentThread().sleep(2000);
				} catch (InterruptedException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
        	}
        }else{
        	System.out.println("      ,      ,      ");
        }
	}
}