成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Spring Boot 如何解決多個定時任務(wù)阻塞問題?

開發(fā) 架構(gòu)
最近長文擼多了,有點累,今天來點簡單的。今天這篇文章介紹一下Spring Boot 中 如何開啟多線程定時任務(wù)?

最近長文擼多了,有點累,今天來點簡單的。

今天這篇文章介紹一下Spring Boot 中 如何開啟多線程定時任務(wù)?

為什么Spring Boot 定時任務(wù)是單線程的?

想要解釋為什么,一定要從源碼入手,直接從@EnableScheduling這個注解入手,找到了這個ScheduledTaskRegistrar類,其中有一段代碼如下:

  1. protected void scheduleTasks() { 
  2.   if (this.taskScheduler == null) { 
  3.    this.localExecutor = Executors.newSingleThreadScheduledExecutor(); 
  4.    this.taskScheduler = new ConcurrentTaskScheduler(this.localExecutor); 
  5.   } 

如果taskScheduler為null,則創(chuàng)建單線程的線程池:Executors.newSingleThreadScheduledExecutor()。

多線程定時任務(wù)如何配置?

下面介紹三種方案配置多線程下的定時任務(wù)。

1、重寫SchedulingConfigurer#configureTasks()

直接實現(xiàn)SchedulingConfigurer這個接口,設(shè)置taskScheduler,代碼如下:

  1. @Configuration 
  2. public class ScheduleConfig implements SchedulingConfigurer { 
  3.     @Override 
  4.     public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { 
  5.         //設(shè)定一個長度10的定時任務(wù)線程池 
  6.         taskRegistrar.setScheduler(Executors.newScheduledThreadPool(10)); 
  7.     } 

2、通過配置開啟

Spring Boot quartz 已經(jīng)提供了一個配置用來配置線程池的大小,如下;

  1. spring.task.scheduling.pool.size=10 

只需要在配置文件中添加如上的配置即可生效!

3、結(jié)合@Async

@Async這個注解都用過,用來開啟異步任務(wù)的,使用@Async這個注解之前一定是要先配置線程池的,配置如下:

  1. @Bean 
  2.   public ThreadPoolTaskExecutor taskExecutor() { 
  3.       ThreadPoolTaskExecutor poolTaskExecutor = new ThreadPoolTaskExecutor(); 
  4.       poolTaskExecutor.setCorePoolSize(4); 
  5.       poolTaskExecutor.setMaxPoolSize(6); 
  6.       // 設(shè)置線程活躍時間(秒) 
  7.       poolTaskExecutor.setKeepAliveSeconds(120); 
  8.       // 設(shè)置隊列容量 
  9.       poolTaskExecutor.setQueueCapacity(40); 
  10.       poolTaskExecutor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); 
  11.       // 等待所有任務(wù)結(jié)束后再關(guān)閉線程池 
  12.       poolTaskExecutor.setWaitForTasksToCompleteOnShutdown(true); 
  13.       return poolTaskExecutor; 
  14.   } 

然后在@Scheduled方法上標(biāo)注@Async這個注解即可實現(xiàn)多線程定時任務(wù),代碼如下:

  1. @Async 
  2.    @Scheduled(cron = "0/2 * * * * ? "
  3.    public void test2() { 
  4.        System.out.println("..................執(zhí)行test2................."); 
  5.    } 

總結(jié)

 

本篇文章介紹了Spring Boot 中 實現(xiàn)多線程定時任務(wù)的三種方案,你喜歡哪一種?

 

責(zé)任編輯:武曉燕 來源: 碼猿技術(shù)專欄
相關(guān)推薦

2024-10-15 16:41:35

2012-02-07 13:31:14

SpringJava

2025-01-08 09:55:37

Spring接口數(shù)據(jù)庫

2023-08-08 08:35:28

web框架Hosting模塊

2022-03-23 11:45:39

Quartz數(shù)據(jù)庫節(jié)點

2024-10-10 10:32:04

2024-11-04 16:01:01

2019-11-26 14:30:20

Spring循環(huán)依賴Java

2018-08-20 07:04:35

2021-09-26 09:17:01

Python命令定時任務(wù)

2025-02-24 16:00:00

SpringBoot定時任務(wù)開發(fā)

2009-10-28 10:05:29

Ubuntucrontab定時任務(wù)

2012-09-05 11:09:15

SELinux操作系統(tǒng)

2010-03-10 15:47:58

crontab定時任務(wù)

2023-11-07 07:47:35

Topic線程PUSH

2019-02-25 15:44:16

開源RabbitMQSpring Clou

2010-04-29 17:46:31

Oracle死鎖

2024-02-28 09:54:07

線程池配置

2022-03-28 08:31:29

線程池定時任務(wù)

2017-03-13 09:12:00

TCP數(shù)據(jù)結(jié)構(gòu)請求包
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 成人特级毛片 | 高清久久久 | 精品伦精品一区二区三区视频 | 亚洲日本欧美 | 一区二区不卡 | 国产在线精品免费 | 黄色亚洲| 亚洲 欧美 日韩在线 | 亚洲国产成人精品女人久久久野战 | 久视频在线观看 | 欧美国产视频 | 男女羞羞视频免费看 | 一级片av | 精品国产一区二区三区久久久蜜月 | 国产日韩欧美精品一区二区三区 | 日本aa毛片a级毛片免费观看 | 91大神在线资源观看无广告 | 国产片淫级awww | 永久www成人看片 | 国产三区精品 | 久久久久亚洲 | 毛片视频网站 | 在线色网 | 欧美激情五月 | 精品国产一区二区在线 | 欧美一级久久精品 | 91精品亚洲 | 亚洲视频二区 | 91精品国产一区二区三区动漫 | 欧美亚州综合 | 国产精品国产a级 | 看亚洲a级一级毛片 | 久久久女女女女999久久 | 欧美高清一区 | 亚洲国产一区二区在线 | 中文av电影 | av免费网站在线观看 | 韩国毛片视频 | 91精品国产美女在线观看 | 一区二区视屏 | 欧美一区二区在线视频 |