2021年1月12日星期二

SpringBoot ThreadPoolTaskScheduler 定时任务 多线程执行 demo

SpringBoot内置定时任务的多线程异步执行配置

1. pom文件

<?

2. SchedulerApplication.java

启动类

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

添加@EnableScheduling注解,启用定时任务。

3. SchedulerConfig.java

定时任务配置类

@Configuration@EnableAsyncpublic class SchedulerConfig { @Bean public Executor taskExecutor() {  ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();  // 设置线程名称前缀,默认为方法名(此处为taskExecutor)  //executor.setThreadNamePrefix("task-");  // 核心线程数  executor.setCorePoolSize(10);  // 最大线程数  executor.setMaxPoolSize(100);  // 等待队列容量  executor.setQueueCapacity(50);  // 空闲线程存活时间(单位:s)  executor.setKeepAliveSeconds(300);  executor.initialize();  return executor; }

添加@EnableAsync注解,启用多线程。

线程池不同情况说明:

  • 若线程数 < corePoolSize,即使线程池中的线程都处于空闲状态,也要创建新的线程来处理被添加的任务。
  • 若线程数 = corePoolSize,但是缓冲队列workQueue未满,那么任务被放入缓冲队列。
  • 若线程数 > corePoolSize,缓冲队列workQueue满,并且线程数 < maxPoolSize,创建新的线程来处理被添加的任务。
  • 若线程数 > corePoolSize,缓冲队列workQueue满,并且线程数 = maxPoolSize,那么通过handler所指定的策略来处理此任务。
    处理任务的优先级为:核心线程corePoolSize、任务队列workQueue、最大线程maximumPoolSize。如果三者都满了,使用handler处理被拒绝的任务。
  • 若线程数 > corePoolSize时,如果某线程空闲时间超过keepAliveTime,线程将被终止。

4. TestScheduler.java

具体定时任务执行类

@Slf4j@Component@Asyncpublic class TestScheduler { @Scheduled(cron = "0/3 * * * * *") public void test() {  log.info("执行定时任务test1"); } @Scheduled(cron = "0/6 * * * * *") public void test2() {  log.info("执行定时任务test2"); }}

在类上添加@Async注解,类中的所有方法都会使用多线程执行任务。
类上不添加,方法上添加@Async,仅添加过@Async的方法会使用多线程执行任务。

5. cron表达式

@Scheduled cron表达式









原文转载:http://www.shaoqun.com/a/508483.html

跨境电商:https://www.ikjzd.com/

拍拍网服装:https://www.ikjzd.com/w/2205

wario:https://www.ikjzd.com/w/887


SpringBoot内置定时任务的多线程异步执行配置1.pom文件<?2.SchedulerApplication.java启动类@SpringBootApplication@EnableSchedulingpublicclassSchedulerApplication{publicstaticvoidmain(String[]args){SpringApplication.run(Sche
蜜芽宝贝官网:蜜芽宝贝官网
feedback:feedback
2020深圳圣诞节平安夜哪里有活动?深圳圣诞夜场去哪好玩?:2020深圳圣诞节平安夜哪里有活动?深圳圣诞夜场去哪好玩?
美国夏威夷旅游签证的办理流程及准备的材料 :美国夏威夷旅游签证的办理流程及准备的材料
九寨沟穿衣注意事项 :九寨沟穿衣注意事项

没有评论:

发表评论