Advertisement

定时任务如何设置支持异步执行多个任务单个任务只能串行处理

阅读量:

Springboot框架中,@Scheduled注解默认采用单线程机制运行。这意味着当系统中存在多个定时任务时,若这些任务设定的触发时间相同,它们将依次排队执行。若某一任务的执行耗时较长,则可能造成其他定时任务无法按照预设时间点触发的问题。为缓解这一情况,可引入异步任务机制,在定时任务方法上添加@Asyns注解后,该任务将被分配至多线程环境中执行。

然而,异步任务也存在一定的局限性。只有在任务的执行顺序对最终结果无影响的前提下,才适合使用异步方式处理。若某些任务必须保持同步执行的特性,但又不希望不同定时任务之间出现相互等待的情况,则可通过以下方法进行优化。

在配置文件中增加相应配置即可实现需求

复制代码
    spring.task.scheduling.pool.size=20
    

以下为代码实现内容

主程序类

复制代码
 package com.example.demo;

    
  
    
 import cn.hutool.extra.spring.EnableSpringUtil;
    
 import org.springframework.boot.SpringApplication;
    
 import org.springframework.boot.autoconfigure.SpringBootApplication;

全部评论 (0)

还没有任何评论哟~