springboot定時任務 @Scheduled

 springboot的@Scheduled註解可以很快速完成咱們須要的定時任務.spring

 代碼以下:springboot

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;


@Configuration
@Component
@EnableScheduling
public class UserTypeUpdateJob  {
    
         SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
         
        /*每100秒執行一次*/
        @Scheduled(fixedRate = 100000)
        public void timerRate() {
            System.out.println("我是:timerRate");
        }
        
        /*第一次10秒後執行,當執行完後2秒再執行*/
        @Scheduled(initialDelay = 10000, fixedDelay = 2000)
        public void timerInit() {
            System.out.println("init : "+dateFormat.format(new Date()));
        }

        /*天天15:39:00時執行*/
        @Scheduled(cron = "0 39 15 * * ? ")
        public void timerCron() {
            System.out.println("current time : "+ dateFormat.format(new Date()));
        }
}

其中須要注意的是:fixedRate和fixedDelay這兩個參數開始計時的時間不同.若是須要調用的方法執行時間比較長, 這時差異就能體現出來.app

fixedRate:上一次開始執行時間點後再次執行;spa

fixedDelay:上一次執行完畢時間點後再次執行;.net

還能夠將執行執行頻率、cron表達式放到application.properties中 調用以下code

@Scheduled(fixedDelayString = "${jobs.fixedDelay}")
  public void getTask1() {
    System.out.println("任務1,從配置文件加載任務信息,當前時間:" + dateFormat.format(new Date()));
  }

經常使用Cron表達式orm

0 10,14,16 * * ? 天天上午10點,下午2點,4點 
0/30 9-17 * * ?   朝九晚五工做時間內每半小時 
0 12 ? * WED 表示每一個星期三中午12點 
"0 0 12 * * ?" 天天中午12點觸發 
"0 * 14 * * ?" 在天天下午2點到下午2:59期間的每1分鐘觸發 
"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:05期間的每1分鐘觸發 
"0 10,44 14 ? 3 WED" 每一年三月的星期三的下午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 ? * 6L" 每個月的最後一個星期五上午10:15觸發 
"0 15 10 ? * 6L 2002-2005" 2002年至2005年的每個月的最後一個星期五上午10:15觸發 
"0 15 10 ? * 6#3" 每個月的第三個星期五上午10:15觸發 
"0 15 10 ? * *" 天天上午10:15觸發 
"0 15 10 * * ?" 天天上午10:15觸發 
"0 15 10 * * ? *" 天天上午10:15觸發 
"0 15 10 * * ? 2005" 2005年的天天上午10:15觸發

 

Cron表達式在線生成器blog

http://cron.qqe2.com/get

http://www.pppet.net/it

相關文章
相關標籤/搜索