当前位置: 首页 > news >正文

电子商务概论亿唐网不做网站做品牌游戏广告联盟平台

电子商务概论亿唐网不做网站做品牌,游戏广告联盟平台,营销型企业网站的含义,南宁网站怎么做seo在springboot项目中可以通过EnableAsyncAsync的方式简化异步操作,下文使用springboot:3.2.1 源码分析 若一个bean中的公共方法上标注了Async,在系统启动时,会给这个类创建一个代理对象,并将该代理对象作为bean注册到spring容器中 …

在springboot项目中可以通过@EnableAsync+@Async的方式简化异步操作,下文使用springboot:3.2.1 源码分析

若一个bean中的公共方法上标注了@Async,在系统启动时,会给这个类创建一个代理对象,并将该代理对象作为bean注册到spring容器中
当调用带有@Async注解的方法时,实际上是调用了代理对象的方法,在代理对象的方法中将真正的方法交给线程池去执行

原理分析

代理方法执行时,AsyncExecutionInterceptor#invoke调用determineAsyncExecutor()方法获取异步执行器,然后将真实方法的执行交给异步执行器
在这里插入图片描述
获取@Async指定的异步执行器,若未指定,则使用默认的异步执行器
在这里插入图片描述

获取默认的异步执行器

  • 默认的异步执行器类型是ThreadPoolTaskExecutor,由org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations.TaskExecutorConfiguration向spring容器中注册
  • 且核心线程数默认是8,阻塞队列容量默认是Integer.MAX_VALUE,可见默认的设置在生产环境使用时存在资源耗尽的风险。可通过配置文件调整(配置项对应类:org.springframework.boot.autoconfigure.task.TaskExecutionProperties)

如果AsyncConfigurer提供了Executor,则使用该Executor作为默认执行器,否则通过getDefaultExecutor方法获取默认执行器
在这里插入图片描述
AsyncExecutionInterceptor#getDefaultExecutor方法中,首先从父类方法中获取执行器(从spring容器中获取org.springframework.core.task.TaskExecutor类型的bean或者name是taskExecutor的bean),若为空,则使用SimpleAsyncTaskExecutor
在这里插入图片描述
在这里插入图片描述
默认情况下,spring容器中并没有TaskExecutor类型的bean,但是在TaskExecutorConfiguration(该配置类是由TaskExecutionAutoConfiguration自动配置类使用@Import导入)配置类中,向spring容器中注册了name是taskExecutor的bean
在这里插入图片描述

自定义异步执行器

自定义默认异步执行器

以下两种方式都是在自定义默认的异步执行器,也就说@Async不指定线程池时使用的默认异步执行器

  1. 自定义配置类,并实现org.springframework.scheduling.annotation.AsyncConfigurer接口,重写getAsyncExecutor方法
  2. 向容器中注册TaskExecutor类型的bean,覆盖内置的TaskExecutor
自定义普通异步执行器
  • 自定义普通异步执行器的bean名称,不可设置为taskExecutor,且类型不可以是TaskExecutor,否则会成为默认异步执行器
  • 可创建org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor对象,并自定义其属性值,然后将该对象注册到spring容器中

异常处理

异步方法的异常捕获和处理
在这里插入图片描述
在这里插入图片描述
默认的异常处理器SimpleAsyncUncaughtExceptionHandler
在这里插入图片描述
在这里插入图片描述
示例

2024-09-20T15:59:20.776+08:00 ERROR 34764 --- [         task-1] .a.i.SimpleAsyncUncaughtExceptionHandler : Unexpected exception occurred invoking async method: public void com.example.box.dynamicproxy.TestJdkProxyServiceImpl.run()java.lang.RuntimeException: 公司又停发工资了!!!at com.example.box.dynamicproxy.TestJdkProxyServiceImpl.run(TestJdkProxyServiceImpl.java:14) ~[classes/:na]at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]

自定义异常处理器

配置类实现AsyncConfigurer接口的getAsyncUncaughtExceptionHandler()方法,返回一个自定义的AsyncUncaughtExceptionHandler实现类的实例
在这里插入图片描述

http://www.dinnco.com/news/18520.html

相关文章:

  • 做外贸网站那个好站长seo查询
  • 推网站河南郑州最近的热搜事件
  • 屏蔽wordpress自带编辑器网站如何seo推广
  • 海口手机版网站建设关键词排名优化公司哪家强
  • 文昌品牌网站建设费用线上营销推广方式都有哪些
  • 东莞网站设计企业网站提交收录软件
  • 制作网站的过程细节网页设计成品源代码
  • asp.net mvc 4 web 企业网站开发实战seo工具下载
  • 怎么做公众号网站在线咨询
  • 做赌博网站刷单违法吗一站式营销平台
  • 南山网站设计公司竞价广告
  • 简述网站制作的流程web网页制作成品免费
  • 洛阳市河阳建设工程有限公司网站十八大禁用黄app入口
  • 江苏省住房城乡建设厅网站首页杭州seo排名优化
  • 精品网站建设费用 找磐石网络一流百度网址入口
  • 景安网站上传完还要怎么做网络营销推广外包服务
  • 如何做deal网站推广网站营销策略
  • 自学做网站需要多久网站seo搜索引擎优化案例
  • 一般网站如何做防采集的广东河源最新疫情
  • 深圳公司排名100强长春seo网站管理
  • 怎么设计公司的网站百度指数查询app
  • 医疗美容手机网站建设热门推广软件
  • 做网站app大连seo
  • 去哪里找做网站的人找个网站
  • 数字博物馆网站建设日本预测比分
  • 网站主机是什么意思济南网络推广网络营销
  • 深圳网站制作与建设公司百度官网推广平台电话
  • 营销型网站建设营销型国外推广网站
  • 无锡网站制作公司排名网站设计公司排行榜
  • 做网站还有开发文档吗百度推广云南总代理