单线程致任务延迟阻塞

问题原因
@Scheduled 默认使用 ThreadPoolTaskScheduler,核心线程数为1。所有任务共享同一线程,若一个任务执行时间过长,其他任务会被阻塞。

解决办法

# 设置定时任务线程池数量
spring:
  task:
    scheduling: 
      # 设置任务调度线程名称前缀
      thread-name-prefix: fan-task-schedule-
      pool:
        size: 20

建议

生产环境避免依赖 @Scheduled 处理高精度或分布式任务,优先 XXL-JOB。
关键任务需添加异常监控和日志追踪,避免“静默失败”。
最后修改:2025 年 08 月 04 日
如果觉得我的文章对你有用,请点个赞吧!