单线程致任务延迟阻塞
问题原因
@Scheduled 默认使用 ThreadPoolTaskScheduler,核心线程数为1。所有任务共享同一线程,若一个任务执行时间过长,其他任务会被阻塞。
解决办法
# 设置定时任务线程池数量
spring:
task:
scheduling:
# 设置任务调度线程名称前缀
thread-name-prefix: fan-task-schedule-
pool:
size: 20建议
生产环境避免依赖 @Scheduled 处理高精度或分布式任务,优先 XXL-JOB。
关键任务需添加异常监控和日志追踪,避免“静默失败”。