javascript
scheduled每天下午1点执行一次_在Spring Boot项目中使用@Scheduled注解实现定时任务...
在java開發(fā)中定時任務(wù)的實現(xiàn)有多種方式,jdk有自己的定時任務(wù)實現(xiàn)方式,很多框架也有定時任務(wù)的實現(xiàn)方式。這里,我介紹一種很簡單的實現(xiàn)方式,在Spring Boot項目中使用兩個注解即可實現(xiàn)。
在spring boot的啟動類上面添加 @EnableScheduling 注解
新創(chuàng)建一個類,用來實現(xiàn)定時任務(wù),這個類要注冊為Bean才行,所以要加上 @Component 、@Repository 、 @ Controller 、@Service 、@Configration其中的一個注解。然后再里面的方法中加上 @Scheduled 注解。
然后為Scheduled注解加上屬性,啟動項目,就可以了。下面介紹Scheduled屬性的用法。
fixedRate
fixedRate表示上一個執(zhí)行開始后再一次執(zhí)行的時間,但是必須要等上一次執(zhí)行完成后才能執(zhí)行。如果上一次執(zhí)行完成了,還沒到下一次執(zhí)行的時間 ,就會等到下一次執(zhí)行的時間到了才會執(zhí)行,如果下一次的執(zhí)行時間到了,上一次還沒執(zhí)行完,那么就會等到 上一次執(zhí)行完成才會執(zhí)行下一次。=后面的值 1000 為1秒。
@Scheduled(fixedRate = 1000)public void fixedRate() throws Exception { System.out.println("fixedRate開始執(zhí)行時間:" + new Date(System.currentTimeMillis())); //休眠8秒 Thread.sleep(1000 * 8); System.out.println("fixedRate執(zhí)行結(jié)束時間:" + new Date(System.currentTimeMillis()));}我們啟動項目看看這個定時任務(wù)的執(zhí)行情況,可以看到開始和結(jié)束時間之間間隔了8秒,然后馬上執(zhí)行了下一次。
我們把改成每2秒執(zhí)行一次,休眠一秒,再來看看效果,可以看到開始執(zhí)行的時間間隔了2秒。
@Scheduled(fixedRate = 1000 * 2)public void fixedRate() throws Exception { System.out.println("fixedRate開始執(zhí)行時間:" + new Date(System.currentTimeMillis())); //休眠8秒 Thread.sleep(1000); System.out.println("fixedRate執(zhí)行結(jié)束時間:" + new Date(System.currentTimeMillis()));}fixedDelay
fixedDelay表示上一次執(zhí)行結(jié)束后再一次執(zhí)行的時間,啟動項目,可以看到上一次執(zhí)行結(jié)束后還等了1秒才執(zhí)行下一次。
@Scheduled(fixedDelay = 1000)public void fixedDelay() throws Exception { System.out.println("fixedDelay開始執(zhí)行時間:" + new Date(System.currentTimeMillis())); //休眠兩秒 Thread.sleep(1000 * 2); System.out.println("fixedDelay執(zhí)行結(jié)束時間:" + new Date(System.currentTimeMillis()));}initialDelay
initialDelay表示項目啟動后延遲多久執(zhí)行定時任務(wù),所以他要配合fixedRate或fixedDelay一起使用。
@Scheduled(initialDelay = 1000*3, fixedDelay = 1000)public void initialDelay() throws Exception { System.out.println("initialDelay開始執(zhí)行時間:" + new Date(System.currentTimeMillis()));}啟動項目,可以看到項目啟動完成后,等了3秒才開始執(zhí)行的定時任務(wù)。
ceon
cron是一種表達(dá)式,具體的寫法規(guī)格有興趣的可以去學(xué)習(xí)一下,不懂也不影響使用,直接按照示例就可以類推,寫出自己想要的,也可以直接使用在線生成。
下面寫幾個示例:
*/3 * * * * ? 每隔3秒執(zhí)行一次
0 */1 * * * ? 每隔1分鐘執(zhí)行一次
0 0 3-10 * * ? 每天3-10點整點觸發(fā)
0 0/3 * * * ? 每三分鐘觸發(fā)一次
0 0-3 14 * * ? 在每天下午2點到下午2:03期間的每1分鐘觸發(fā)
0 0/5 14 * * ? 在每天下午2點到下午2:55期間的每5分鐘觸發(fā)
0 0 10,14,17 * * ? 每天上午10點,下午2點,5點
cron大致了解后,來看看實現(xiàn)效果,我寫的是每 3秒執(zhí)行一次
@Scheduled(cron = "*/3 * * * * ?")public void cron() { System.out.println("cron開始執(zhí)行時間:" + new Date(System.currentTimeMillis()));}啟動項目后,可以看到每次的執(zhí)行時間間隔了3秒
spring boot 用@Scheduled注解實現(xiàn)定時任務(wù)就介紹到這里。
項目源碼地址: https://github.com/straw-mao/springbootdemo
總結(jié)
以上是生活随笔為你收集整理的scheduled每天下午1点执行一次_在Spring Boot项目中使用@Scheduled注解实现定时任务...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: char类型的实参与const char
- 下一篇: json文件示例_Spark SQL -