java的常用定時任務的幾種方式


Java基本的定時任務,一般有這幾種方式:

一、Timer
 1 public class Timer{
 2     static int index=0;
 3     public static void main(String[] args){
 4         Timer timer=new Timer();
 5             timer.schedule(new TimerTask() {
 6                 @Override
 7                 public void run() {
 8                     index++;
 9                     System.out.println("你好");
10                     if (index>100){
11                         timer.cancel();
12                     }
13                 }
14             },0,1000);
15     }      
16 }
 
        

 

 
        

通過往Timer提交一個TimerTask的任務,同時指定多久后開始執行以及執行周期,就可以周期執行任務。

 

二、Threa線程

 1 public class ThreadTest implements Runnable{
 2     static int i=0;
 3     @Override
 4     public void run() {
 5         Boolean t=true;
 6         while (t){
 7             i++;
 8             try {
 9                 if (i<100) {
10                     Thread.sleep(1000);
11                     System.out.println("你好");
12                 }else{
13                     t=false;
14                 }
15             } catch (InterruptedException e) {
16                 e.printStackTrace();
17             }
18         }
19     }
20     public static void main(String[] args){
21         ThreadTest test=new ThreadTest();
22         Thread t=new Thread(test);
23         t.start();
24     }

通過創建一個線程,
讓它在while循環里一直運行着,通過sleep方法來達到定時任務的效果。

三、Sping的@Scheduled注解定時

1    @Scheduled(fixedDelay = 5000)
2     public void note(){
3         System.out.println("你好");
4     }

注解中指定的屬性名稱是fixedRate,是指以固定頻率(周期)執行任務,這個周期是以上一個任務開始時間為基准。

1     @Scheduled(cron="0 0 8 * * ?")
2     public void note(){
3         System.out.println("你好");
4     }

注解中指定的屬性名稱是cron,指定時調用,cron的參數依次指:

  •        秒(0~59)
  •   分鍾(0~59)
  •   小時(0~23)
  •   天(月)(0~31,但是你需要考慮你月的天數)
  •   月(0~11)
  •   天(星期)(1~7 1=SUN 或 SUN,MON,TUE,WED,THU,FRI,SAT)
  •   年份(1970-2099)

四、分布式定時框架LTS

 LTS 源碼地址: https://github.com/ltsopensource/light-task-scheduler

   實例源碼:4種demo包括純java、xml配置、注解配置、springboot

   LTS 代碼例子地址:https://github.com/ltsopensource/lts-examples/tree/master/lts-example-jobclient 

 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM