最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring中自帶的@Schedule實現(xiàn)自動任務(wù)的過程解析

 更新時間:2023年06月07日 17:13:20   作者:秋天code  
這篇文章主要介紹了關(guān)于Spring中自帶的@Schedule實現(xiàn)自動任務(wù),本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

SpringBoot中自帶了一個能夠?qū)崿F(xiàn)定時任務(wù)的注解@Schedule
如果定時任務(wù)比較簡單,則可以使用SpringBoot中自帶的@Schedule,但是如果任務(wù)調(diào)度很復(fù)雜的話,就建議使用Quartz組件了。
說一下這個@Schedule注解怎么用?

基本使用

1.第一步:在一個方法上使用@Schedule,標(biāo)注這個方法是一個自定義任務(wù)
通過該注解的cron屬性,指定任務(wù)的運(yùn)行規(guī)則

@Slf4j  
@Component  
public class MyTimeJob {  
	@Scheduled(cron = "0/1 * * * * *")  
	public void distanceOffDuty() {  
		log.info("現(xiàn)在是{},{}",new Date(),"~~~馬上就要下班了");  
	}
}

關(guān)于Cron表達(dá)式,可以自己學(xué)習(xí),
寫cron表達(dá)式是一件麻煩的事情,就像寫正則表達(dá)式似的
建議使用工具來生成cron表達(dá)式
在線Cron表達(dá)式生成器

2.在配置類上通過@EnableScheduling開啟定時任務(wù)配置,開啟了此配置后,SpringBoot會自動掃描容器中帶有@Schedule注解
注意:將包含@Schedule標(biāo)注的方法所在的類,設(shè)置為Component或Configuration,要讓SpringBoot知道這個類

@SpringBootApplication  
@EnableScheduling  
public class TestQuartzApplication {  
	public static void main(String[] args) {  
		SpringApplication.run(TestQuartzApplication.class, args);  
	}  
}

接下來啟動程序,就可以看到自定義任務(wù)執(zhí)行了

多線程執(zhí)行

默認(rèn)情況下,我們所有自定義的任務(wù)是單線程的,多個任務(wù)之間排隊執(zhí)行。
例如,我們定義了兩個任務(wù):

@Slf4j  
@Component  
public class MyTimeJob {  
	@Scheduled(cron = "0/1 * * * * *")  
	public void distanceOffDuty() {  
		log.info("現(xiàn)在是{},{}",new Date(),"~~~馬上就要下班了");  
	}  
	@Scheduled(cron = "0/10 * * * * *")  
	public void work(){  
		log.info("又工作(摸魚)了10秒鐘了");  
	}  
}

看控制臺這兩個任務(wù)的執(zhí)行情況:

如果想要為每一個任務(wù)單獨(dú)開一個線程,異步化操作,效率能提高,不會被阻塞。
此時需要自定義線程池,看操作!

自定義配置類

@Configuration  
@EnableScheduling  
public class ScheduledConfig implements SchedulingConfigurer {  
	/**  
	* 任務(wù)執(zhí)行線程池大小  
	*/  
	private static final int TASK_POOL_SIZE = 50;  
	/**  
	* 自定義線程前綴  
	*/  
	private static final String TASK_THREAD_PREFIX = "scheduling-task-";  
	@Override  
	public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) {  
		// 創(chuàng)建任務(wù)線程池  
		ThreadPoolTaskScheduler taskPool = new ThreadPoolTaskScheduler();  
		// 設(shè)置線程池大小  
		taskPool.setPoolSize(TASK_POOL_SIZE);  
		// 線程前綴名  
		taskPool.setThreadNamePrefix(TASK_THREAD_PREFIX);  
		// 初始化  
		taskPool.initialize();  
		scheduledTaskRegistrar.setTaskScheduler(taskPool);  
	}  
}

看自定義任務(wù)的執(zhí)行情況:

每次執(zhí)行任務(wù),都會在線程池中取一個線程來使用

到此這篇關(guān)于關(guān)于Spring中自帶的@Schedule實現(xiàn)自動任務(wù)的文章就介紹到這了,更多相關(guān)Spring @Schedule自動任務(wù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java設(shè)計模式之原型模式詳細(xì)解讀

    Java設(shè)計模式之原型模式詳細(xì)解讀

    這篇文章主要介紹了Java設(shè)計模式之原型模式詳細(xì)解讀,原型模式屬于創(chuàng)建型設(shè)計模式,用于創(chuàng)建重復(fù)的對象,且同時又保證了性能,該設(shè)計模式的好處是將對象的創(chuàng)建與調(diào)用方分離,需要的朋友可以參考下
    2023-12-12
  • java中的Supplier接口解析

    java中的Supplier接口解析

    Java 8引入的Supplier接口是一個無參數(shù)函數(shù)式接口,通過get()方法延遲計算結(jié)果,它適用于按需生成場景,下面就來介紹一下如何使用,感興趣的可以了解一下
    2025-12-12
  • Java的Swing編程中使用SwingWorker線程模式及頂層容器

    Java的Swing編程中使用SwingWorker線程模式及頂層容器

    這篇文章主要介紹了在Java的Swing編程中使用SwingWorker線程模式及頂層容器的方法,適用于客戶端圖形化界面軟件的開發(fā),需要的朋友可以參考下
    2016-01-01
  • Spring詳細(xì)講解事務(wù)失效的場景

    Spring詳細(xì)講解事務(wù)失效的場景

    實際項目開發(fā)中,如果涉及到多張表操作時,為了保證業(yè)務(wù)數(shù)據(jù)的一致性,大家一般都會采用事務(wù)機(jī)制,好多小伙伴可能只是簡單了解一下,遇到事務(wù)失效的情況,便會無從下手,下面這篇文章主要給大家介紹了關(guān)于Spring事務(wù)失效場景的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • 一篇文章帶你了解JavaSE的數(shù)據(jù)類型

    一篇文章帶你了解JavaSE的數(shù)據(jù)類型

    這篇文章主要給大家介紹了關(guān)于JavaSE的數(shù)據(jù)類型,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-09-09
  • java文件操作代碼片斷實例實現(xiàn)統(tǒng)計文件中字母出現(xiàn)的個數(shù)功能

    java文件操作代碼片斷實例實現(xiàn)統(tǒng)計文件中字母出現(xiàn)的個數(shù)功能

    本文介紹java讀文件實例,實現(xiàn)統(tǒng)計某一目錄下每個文件中出現(xiàn)的字母個數(shù)、數(shù)字個數(shù)、空格個數(shù)及行數(shù),除此之外沒有其他字符,大家參考使用吧
    2014-01-01
  • idea中解決maven包沖突的問題(maven helper)

    idea中解決maven包沖突的問題(maven helper)

    這篇文章主要介紹了idea中解決maven包沖突的問題(maven helper),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • MyBatis連接池的深入和動態(tài)SQL詳解

    MyBatis連接池的深入和動態(tài)SQL詳解

    這篇文章主要介紹了MyBatis連接池的深入和動態(tài)SQL詳解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • 關(guān)于PreparedStatement的setObject作用及說明

    關(guān)于PreparedStatement的setObject作用及說明

    這篇文章主要介紹了關(guān)于PreparedStatement的setObject作用及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Springboot?過濾器、攔截器、全局異常處理的方案處理小結(jié)

    Springboot?過濾器、攔截器、全局異常處理的方案處理小結(jié)

    攔截器是一種動態(tài)攔截方法調(diào)用的機(jī)制,與過濾器類似,是Spring框架中提供的,用來動態(tài)攔截控制器方法的執(zhí)行,這篇文章主要介紹了Springboot?過濾器、攔截器、全局異常處理,需要的朋友可以參考下
    2024-03-03

最新評論

陇川县| 开化县| 铁岭县| 边坝县| 古蔺县| 辉县市| 龙岩市| 若羌县| 广东省| 屯门区| 会泽县| 松阳县| 彰化县| 武宁县| 台南县| 城步| 淮阳县| 河曲县| 浮梁县| 姚安县| 隆林| 南昌市| 太康县| 会昌县| 拉孜县| 宽城| 安图县| 永新县| 乐亭县| 邳州市| 慈溪市| 永修县| 新疆| 兴化市| 水富县| 亚东县| 宝丰县| 大英县| 灵川县| 湘阴县| 晋江市|