Springboot使用@Async常见问题
来源:http://www.tudoupe.com时间:2022-04-17
一、 OOM错误
程序报错:OutOfMemoryError:unable to create new native thread
原因:
springboot-2.1.0
2. 1.0) 默认不适用于线索库,因为每次援引加速器,线索库就会产生新的线索。
Springboot@AsyncOOM的坑和源码分辨率。
解决:配置线程池
第一次@ configifation
Springbot-2. 1 是版本小于 0 的默认版本 。SimpleAsyncTaskExecutor
这不是一个线性球池。 有一个 OOM 问题, 必须通过自定义的线性球池手动解决 。
方案一
Bean的定制线泳池不自定义异常处理
方案二
:实现AsyncConfigurer
在界面中重写 GetAssyncExculator () 和 GetAsyncUncaght DevisionHandler () 方法 。
一、二. yml方法(春灯-2).Version 0及以上,包括2.O.
SpringBoot-2. one. Verion 0 及以上允许使用默认自动组装的线索库,尽管默认参数不切实际,需要根据自身的服务器设置和业务需要,通过 yml 合理设定线索库参数。
官方工作交流和日程安排网络
Tips:
如果需要隐喻异常处理器, 则无法使用默认的线索库。 引用文件机制 :备选方案二是实施Async Confuler接口。
这是通过界定线索库来实现的。
二、异步失效
@Async
在没有采取步骤的情况下,插入了说明。类
或者方法
这一类中的每一方法都是朝着正确方向迈出的一步。
如下表所示,注意到该步骤未生效的现场:
不论该呼叫是本地电话还是同一类别中的跨类电话,同步化需要非同步技术,没有阶段生效,所有工作同步进行。
调用类型 | 发起调用方法 | 被调用方法 | 异步是否生效 | 备注 |
---|---|---|---|---|
同类本地调用 | 异步1 | 异步2 | 是/否 | 第1步目前生效,第2步线用于执行第1步,第2步线保持不变。 |
同类本地调用 | 异步1 | 同步2 | 是 | 步骤1现已生效,同步1已经用天体步骤1线修改和完成。 |
同类本地调用 | 同步1 | 异步2 | 否 | 采用了一种主要的同步技术,使用主线调用并执行非同步 2。 |
跨类调用 | 异步1 | 异步2 | 是/是 | 步骤1已经生效,步骤2已经生效,步骤1和2分别使用不同的线条。 |
跨类调用 | 异步1 | 同步2 | 是 | 第1步现已启动,第1步正以1号天体线同步进行。 |
跨类调用 | 同步1 | 异步2 | 是 | 同步1条主行执行, 星际泳池执行天体2 |
测试代码可在吉特找到,地址可在文章结尾处找到。
三. 无法获得不对称方法回报的价值。
1. 直接返回:没有获得返回值。
结果
2、直接返回基本类型
,报错AopInvocationException
AOP 不允许基本类型返回 。
结果
3、返回Future
包装的类型AsyncResult<String>
,通过future.get()
通常可以获取检索值。
结果
Tips:@Async
动态代理改进了底层。 可调用是原始逻辑。 使用可完成的未来来实施它 。AsyncResult
对CompletableFuture
返回结果进行了封装
四、异步异常处理
重写org.springframework.scheduling.annotation.AsyncConfigurer#getAsyncUncaughtExceptionHandler
测试方法
单元测试
结果
五、代码
https://gitee.com/qbhj/java-cases/tree/master/case-springboot-async
如果你弄错了,你可以留个其他场景没有覆盖的留言 继续写稿子!
谢谢!
相关新闻
- 2023-04-16 2台电脑怎么共享(2台电脑怎么共享
- 2023-04-16 主板检测卡代码(电脑主板检测卡代
- 2023-04-16 dnf未响应(dnf未响应老是上不去)
- 2023-04-16 ppoe(pppoe拨号上网)
- 2023-04-16 网速不稳定(网速不稳定是路由器的
- 2023-04-16 wds状态(Wds状态成功)
- 2023-04-16 光标键(光标键不动了怎么办)
- 2023-04-16 电脑提速(电脑提速100倍的方法)
- 2023-04-16 切换用户(切换用户怎么切换回来
- 2023-04-16 数据包是什么(产品数据包是什么
|
|
|
|
|
|
|
|
|
|