spring6源码阅读(七):spring-core解析

task

package-info.java

该包定义了 Spring 的核心 TaskExecutor 抽象,并提供了 SyncTaskExecutor 和 SimpleAsyncTaskExecutor 实现。

该包显然是线程池相关,额外的还有一个注解也在现代开发非常常见----@Async ,该注解用于启动一个异步的线程执行任务。

此外由于该包属于一种有深度,但完全0构建不依赖其他包的状态,所以必然会使用到大量的设计模式进行优化,以下为ai总结的设计模式


• 主要模式
                                                                                                                                                                                        
  - 策略(Strategy)                                                                                                                                                                    
      - 用统一的执行抽象替换可变算法族:TaskExecutor 定义执行策略,具体策略由实现类替换(同步、每任务新线程、虚拟线程等)。                                                             
                                                                                              
  - 适配器(Adapter)                                                                                                                                                                   
      - 在 JUC 与 Spring 抽象之间互转:将 Executor/ExecutorService 适配为 TaskExecutor/AsyncTaskExecutor,以及反向将 TaskExecutor 暴露为 ExecutorService。                              
                                                                                                                                              
  - 装饰器(Decorator)                                                                                                                                                                 
      - 在不改变原任务的前提下为 Runnable 叠加行为(上下文传播、监控等);执行前对任务进行包装。                                                                                        
                                                 
  - 模板方法(Template Method)                                                                                                                                                         
      - 在线程创建与并发节流上通过基类提供模板钩子,由子类/调用点在合适位置触发。                                                                                                       
                                                  
                                              
  - 工厂方法 / 抽象工厂(Factory Method / Abstract Factory)                                                                                                                            
      - 线程创建解耦:优先用 ThreadFactory,否则走模板创建;虚拟线程通过委托产出工厂。                                                                                                  
                                               
  - 命令(Command)                                                                                                                                                                     
      - 将任务建模为可执行命令对象:Runnable/Callable 即命令,执行器只负责调度与运行,装饰器/适配器在外部增强或转换。                                                                   
        
  - 组合(Composite)                                                                                                                                                                   
      - 组合多个装饰器并保持统一接口,形成可按顺序应用的一致行为管线。                                                                                                                  
                                                                     
  - 委托 / 桥接(Delegation / Bridge)                                                                                                                                                  
      - 通过委托隔离 JDK21 特性:虚拟线程相关 API 隔离在 VirtualThreadDelegate,在多发行版环境下由对应实现接管。                                                                        
                                                                                                                                             
  - Promise/Future(并发模式,非 GoF)                                                                                                                                                  
      - 使用 Future/CompletableFuture 暴露异步结果;早期的 ListenableFuture 已被标记弃用替换为 CompletableFuture。                                                                      
                                                                                                                                        
  - 异常转换(Spring 惯用法)                                                                                                                                                           
      - 将底层 RejectedExecutionException 统一转换为 TaskRejectedException,对调用方暴露稳定异常体系。                                                                                  

posted @ 2025-10-08 12:44  wenzhuo4657  阅读(1)  评论(0)    收藏  举报