Skip to content
发布于 更新于

1. 包结构 ​

  • 位于spring-context的包下面

2. Class ​

2.1. SchedulingTaskExecutor ​

classDiagram
    direction BT
    class AsyncTaskExecutor {
        <<Interface>>
        + execute(Runnable, long) void
        + submit(Runnable) Future~?~
        + submit(Callable~T~) Future~T~
    }
    class Executor {
        <<Interface>>
        + execute(Runnable) void
    }
    class FunctionalInterface
    class SchedulingTaskExecutor {
        <<Interface>>
        + prefersShortLivedTasks() boolean
    }
    class TaskExecutor {
        <<Interface>>
        + execute(Runnable) void
    }

    AsyncTaskExecutor --> TaskExecutor
    SchedulingTaskExecutor --> AsyncTaskExecutor
    TaskExecutor --> Executor
    FunctionalInterface .. TaskExecutor


2.2. SchedulingAwareRunnable ​

2.3. ScheduledAnnotationBeanPostProcessor ​

3. 核心作用 ​

Spring Scheduling 主要解决的是定时任务的注册和执行问题。最常见的使用方式就是:

  • @EnableScheduling
  • @Scheduled

框架会在启动时扫描这些注解,并把对应方法注册成定时任务。

4. 使用关注点 ​

  • 定时任务默认并不一定并发执行,要看具体线程池配置。
  • 任务方法里如果抛异常,可能会影响后续调度。
  • 长任务和高频任务要重点关注线程池、重入和幂等。

基于 VitePress + GitHub Actions 自动部署