程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> java中quartz調度在一些定時任務(job)的入門級應用

java中quartz調度在一些定時任務(job)的入門級應用

編輯:關於JAVA

Quartz 執行詳解:http://quartz-scheduler.org/   去下載相應的jar包 在maven中可直接把依賴拷貝過來復制到pom中去。

具體規則可查詢quartz的文檔

下面是一個非常詳細的實例:

1.首先把需要執行的任務寫到execute中去 並實現job

package job;  
import java.util.Date;    
       
import org.quartz.Job;    
import org.quartz.JobExecutionContext;    
import org.quartz.JobExecutionException;    
/**   
* 需要執行的任務   
* @author clq   
*   
*/  
public class MyJob implements Job {    
       
   @Override  
   //把要執行的操作,寫在execute方法中    
   public void execute(JobExecutionContext arg0) throws JobExecutionException {    
       System.out.println("測試Quartz"+new Date());    
   }    
}    
2.調用任務需要實現的類  
package job;  
import org.quartz.Scheduler;  
import org.quartz.SchedulerFactory;  
import org.quartz.impl.JobDetailImpl;  
import org.quartz.impl.StdSchedulerFactory;  
import org.quartz.impl.triggers.CronTriggerImpl;  
       
public class CronTriggerTest2 {  
      
public static void main(String[] args) {  
      
//通過SchedulerFactory獲得一個調度器  
SchedulerFactory schedulerfactory=new StdSchedulerFactory();    
    Scheduler scheduler=null;    
       try{  
       //獲取調度器實例  
       scheduler=schedulerfactory.getScheduler();    
         
            // 指明job的名稱,所在組的名稱,以及綁定job類    創建jobDetail實例,綁定Job實現類    
       JobDetailImpl jobDetail=new JobDetailImpl("job1", "jgroup1", MyJob.class);  
      
       //定義調度出發規則 每隔2秒執行一次  
       CronTriggerImpl cornTrigger=new CronTriggerImpl("jobname","jobgroup");  
      
       //括號裡面的*號依此為秒,分,時,天,周,月,年  
       //裡面有具體的使用規則,非常靈活  
       cornTrigger.setCronExpression("0/2 * * * * ? *");  
      
       //把作業和觸發器注冊到任務調度中    
       scheduler.scheduleJob(jobDetail, cornTrigger);  
       //啟動調度  
      
       scheduler.start();    
       }catch(Exception e){  
       e.printStackTrace();  
       }  
}  
}

查看本欄目

CronTriggerTest2  這個類由於裡面的很多方法已經被遺棄,這是一個新寫的實現類,其功能和上面的一模一樣

package job;  
       
import org.quartz.JobBuilder;  
import org.quartz.JobDetail;    
import org.quartz.Scheduler;    
import org.quartz.SchedulerFactory;    
import org.quartz.SimpleScheduleBuilder;  
import org.quartz.Trigger;  
import org.quartz.TriggerBuilder;  
import org.quartz.TriggerKey;  
import org.quartz.impl.StdSchedulerFactory;    
/**   
* 調用任務的類   
* @author clq 
*   
*/  
public class CronTriggerTest {   
  public static void main(String[] args) {    
         
      SchedulerFactory schedulerfactory=new StdSchedulerFactory();    
      Scheduler scheduler=null;    
      try{    
          scheduler=schedulerfactory.getScheduler();    
          JobDetail job = JobBuilder.newJob(MyJob.class)  
          .withIdentity("myJob")  
          .build();  
      
          Trigger trigger = TriggerBuilder.newTrigger()  
          .withIdentity(TriggerKey.triggerKey("myTrigger", "myTriggerGroup"))  
          .withSchedule(SimpleScheduleBuilder.simpleSchedule()  
              .withIntervalInMilliseconds(2000)  
              .repeatForever())  
          .startNow()  
          .build();  
      
          scheduler.scheduleJob(job, trigger);    
//       啟動調度    
          scheduler.start();    
      }catch(Exception e){    
          e.printStackTrace();    
      }    
}    
}

在某種意義上來理解一個job指的就是一個單線程,這個在開發中的使用更是普遍,大家可以認真學習一下quartz夫人用法。

在執行上述方法後,你會發現程序會非常穩定的去執行MyJob中自己需要去執行的方法,每隔2s執行一次

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved