1. 程式人生 > >Quartz任務排程的簡單應用

Quartz任務排程的簡單應用

Quartz框架主要分為三部分: 1 任務 2 觸發器 3 排程器 謝了一個簡單例子,大家可以看下

public class RemindJob implements Job {
	 int[]param=new int[]{1,2,3,4,5,6,7};

	@Override
	public void execute(JobExecutionContext arg0) throws JobExecutionException {
	   for(int i=0;i<param.length;i++){
		   if(param[i]<10){
			   param[i]=5;
		   } 
		   System.out.println(param[i]);
	   }
	   
		
	}

}

建立一個任務類,下面是一個測試類

public class TestQuartz {
	  public static void main(String[] args) throws SchedulerException, ParseException, InterruptedException {
	        //建立job 任務
	JobDetail job=new JobDetail("myJob","A",RemindJob.class);
	      //建立觸發器-trigget 
	 SimpleTrigger trigger=new  SimpleTrigger("myTrigger",
			 SimpleTrigger.REPEAT_INDEFINITELY,3000);
	 //秒 分 時 日 月 周 年  日和周如果不是實際數,必須有一個是?,一個是*來代表
     //中劃線 範圍
     //逗號  列表
     //除號  增量
	 CronTrigger cronTrigger=new CronTrigger("myCronTrigger","B","0/3 * * ? * * ");
	// trigger.setStartTime(new Date(System.currentTimeMillis()+1000));
	 //建立排程器
	 //建立Scheduler工程
	  SchedulerFactory factory=new StdSchedulerFactory();
	  Scheduler scheduler=factory.getScheduler();
	//粘合任務和排程器
	//  scheduler.scheduleJob(job,trigger);
	  scheduler.scheduleJob(job,cronTrigger);
      scheduler.start();
      Thread.sleep(2000000);
      scheduler.shutdown();
	  }
}

CronTrigger(“myCronTrigger”,“B”,"0/3 * * ? * * ");裡面的"0/3 * * ? * * "非常有意思,這個是6個,分別是秒,分,時,日,月,周.當年也可以在加個年。其中日和周可以用?代替,代表每一天,每一週,但只能存在一個問號,另一個必須用*代替。 秒,分,時分別可用,和—來標識,如0-10 13 14 * * ? 這個就代表每週的14點13分0至10. 很簡單,每隔三秒執行一次,將數組裡面的值如果小於10,就都賦值成為5. 這個定時任務應用就比較廣泛了,比如媒體定時釋出新聞,設定哪一天定時釋出,那就可以寫一個方法,每隔幾秒鐘查詢一次資料庫,當然查出來的資料是一個集合。當定時的時間小於等於系統時間,就可改變狀態釋出了