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;@Overridepublic Executor getAsyncExecutor() {return new LazyTraceExecutor(this.beanFactory, new SimpleAsyncTaskExecutor());}}
更多的SimpleAsyncTaskExecutor见《spring线程池(同步、异步)》
Aysnc的异步执行的线程池相关推荐
- @Async 异步任务自定义线程池的配置方法和 @Scheduled 定时任务自定义线程池的配置方式
文章目录 一.定时和异步业务场景描述 二.定时调度任务的实现方式 三.定时调度任务的问题描述 四.定时调度多线程解决方案(方案一) 五.异步多线程程序实现方式 六.定时调度多线程解决方案(方案二) 一 ...
- 有赞一面:还有任务没执行,线程池被关闭怎么办?
说在前面 在40岁老架构师 尼恩的读者交流群(50+)中,最近有小伙伴拿到了一线互联网企业如极兔.有赞.希音的面试资格,遇到一几个很重要的面试题: 还有线程池正在执行的任务和线程,如果线程池shutd ...
- Java异步并发和线程池
Java异步并发和线程池 1.一条简单粗暴的路: a.使用 parallelStream可能存在的bug b. 如何正确使用 parallelStream 2.另一条路 参考1: https://we ...
- python异步爬虫之线程池
单线程不足之处 当对多个url发送请求时,只有请求完第一个url才会接着请求第二个url(requests是一个阻塞的操作),比如下载图片,这种一个个执行的方式称为单线程.其存在等待的时间,这样效率是 ...
- Springboot之@Async异步指定自定义线程池使用
开发中会碰到一些耗时较长或者不需要立即得到执行结果的逻辑,比如消息推送.商品同步等都可以使用异步方法,这时我们可以用到@Async.但是直接使用 @Async 会有风险,当我们没有指定线程池时,他会默 ...
- 串行任务如何提高效率Java_具有相同属性任务串行有序执行的线程池设计
我有一个这样的线程池的场景,相信很多人都遇到过: 1,每个用户都可以添加多个任务: 2,有很多的用户和很多的任务: 3,每个用户添加的任务必须有序串行执行,即在同一时刻不能有同时执行一个用户的两个任务 ...
- java线程不执行_java线程池,阿里为什么不允许使用Executors?
带着问题 阿里Java代码规范为什么不允许使用Executors快速创建线程池? 下面的代码输出是什么? ThreadPoolExecutor executor = new ThreadPoolExe ...
- UE4异步编程专题 - 线程池FQueuedThreadPool
1. FQueuedThreadPool & IQueuedWork FQueuedThreadPool是UE4中抽象出的线程池.线程池由若干个Worker线程,和一个同步队列构成.UE4把同 ...
- springboot如何使用多线程,线程池管理
在原生java中,创建和启动线程的方式大致有以下几种: 继承Thread类,然后重写run方法 实现Runnable接口,并重写run方法 匿名内部类 Thread thread = new Thre ...
最新文章
- 基于“飞桨”的深度学习智能车
- 洛谷P3779 [SDOI2017]龙与地下城(概率论+Simpson+FFT)
- Nature子刊 | 研究人员提出神经脆性可作为癫痫发作区(SOZ)的脑电图(EEG)标志物
- hal库开启中断关中断_[STM32]HAL库下GPIO按键中断与去抖问题分析(分析源码解决问题)...
- QQ空间Python爬虫v2.0--点赞数据分析
- Visio studio 2019中opencv 4.1.1运行环境配置(亲测可用)
- Angular应用一个创建场景的问题分析
- NSA泄露的恶意软件DoublePulsar感染了数万台Windows电脑
- mysql-数据库的增删切换使用等操作
- linux tar 基本格式、常用选项、压缩与解压缩
- python 写文件 编码_Python文件写入时的编码问题解决
- t470键盘拆解_thinkpad t470怎么样?thinkpad t470拆机图解全面评测
- 逻辑回归、LR算法、LR优缺点、LR推导、LR损失函数
- 巧用python求解逻辑题,特简单!
- 往事如烟 - 梧桐叶落
- excel2010将数字变成以文本存储的数字
- 小猫爪:i.MX RT1050学习笔记3-CCM
- Compound原理
- 2023年山东最新建筑八大员(电气施工员)模拟真题题库及答案
- _02_使用UUID获取唯一标识
热门文章
- 数据库中INFORMATION_SCHEMA的说明及使用
- Map集合练习之对字符串中字母出现的次数求和
- WP8.1学习系列(第五章)——中心控件Hub或透视控件Pivot交互UX
- nyoj------203三国志
- 为清理助手制作便利工具的技术实现
- id: cannot find name for user ID xxx处理办法
- 从@property说起(四)深入成员变量
- 剑指offer5 从尾到头打印链表
- C#之自己定义的implicit和explicit转换
- [置顶] 安全-用户身份验证