zoukankan      html  css  js  c++  java
  • Spring @Async之四:Aysnc的异步执行的线程池

    ProxyAsyncConfiguration.java源码:

    @Configuration
    @Role(BeanDefinition.ROLE_INFRASTRUCTURE)
    public class ProxyAsyncConfiguration extends AbstractAsyncConfiguration {
    
        @Bean(name = TaskManagementConfigUtils.ASYNC_ANNOTATION_PROCESSOR_BEAN_NAME)
        @Role(BeanDefinition.ROLE_INFRASTRUCTURE)
        public AsyncAnnotationBeanPostProcessor asyncAdvisor() {
            Assert.notNull(this.enableAsync, "@EnableAsync annotation metadata was not injected");
            AsyncAnnotationBeanPostProcessor bpp = new AsyncAnnotationBeanPostProcessor();
            Class<? extends Annotation> customAsyncAnnotation = this.enableAsync.getClass("annotation");
            if (customAsyncAnnotation != AnnotationUtils.getDefaultValue(EnableAsync.class, "annotation")) {
                bpp.setAsyncAnnotationType(customAsyncAnnotation);
            }
            if (this.executor != null) {
                bpp.setExecutor(this.executor);
            }
            if (this.exceptionHandler != null) {
                bpp.setExceptionHandler(this.exceptionHandler);
            }
            bpp.setProxyTargetClass(this.enableAsync.getBoolean("proxyTargetClass"));
            bpp.setOrder(this.enableAsync.<Integer>getNumber("order"));
            return bpp;
        }
    
    }

    AbstractAsyncConfiguration.java源码:

        @Autowired(required = false)
        void setConfigurers(Collection<AsyncConfigurer> configurers) {
            if (CollectionUtils.isEmpty(configurers)) {
                return;
            }
            if (configurers.size() > 1) {
                throw new IllegalStateException("Only one AsyncConfigurer may exist");
            }
            AsyncConfigurer configurer = configurers.iterator().next();
            this.executor = configurer.getAsyncExecutor();
            this.exceptionHandler = configurer.getAsyncUncaughtExceptionHandler();
        }

    AsyncDefaultAutoConfiguration.java源码:

    public class AsyncDefaultAutoConfiguration {
    
        @Autowired private BeanFactory beanFactory;
    
        @Configuration
        @ConditionalOnMissingBean(AsyncConfigurer.class)
        @ConditionalOnProperty(value = "spring.sleuth.async.configurer.enabled", matchIfMissing = true)
        static class DefaultAsyncConfigurerSupport extends AsyncConfigurerSupport {
    
            @Autowired private BeanFactory beanFactory;
    
            @Override
            public Executor getAsyncExecutor() {
                return new LazyTraceExecutor(this.beanFactory, new SimpleAsyncTaskExecutor());
            }
        }

     更多的SimpleAsyncTaskExecutor见《spring线程池(同步、异步)

  • 相关阅读:
    FlashInspector 【Firefox浏览器插件,flash分析工具】
    屌丝和木耳
    Flash剪贴板功能
    sql newid()随机函数
    SQL 视图
    向SQL Server 现有表中添加新列并添加描述.
    sql server 约束 查找
    创建与删除SQL约束或字段约束
    SQLServer
    利用排序规则特点计算汉字笔划和取得拼音首字母
  • 原文地址:https://www.cnblogs.com/duanxz/p/9438757.html
Copyright © 2011-2022 走看看