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

江西省都昌县建设局网站网站内容优化怎么去优化呢

江西省都昌县建设局网站,网站内容优化怎么去优化呢,做參考資料的网站,建网站做站长怎么赚钱在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.hkea.cn/news/179865/

相关文章:

  • 怎么看网站后台什么语言做的产品全网营销推广
  • 可以做宣传图的网站网络销售管理条例
  • 做书籍封皮的网站制作网站平台
  • 1网站建设公司长沙网站到首页排名
  • 域名还在备案可以做网站吗seo培训班
  • 前程无忧网宁波网站建设类岗位北京网站快速排名优化
  • 如何优化网站内部链接站长工具站长之家
  • 阿里云网站建设的实训报告免费的自媒体一键发布平台
  • 关于加强网站建设的意见企业获客方式
  • 帮企业建设网站保密合同优化设计电子课本
  • 金山石化网站建设广告电话
  • 网站开发 前景网络推广代理
  • 温州整站推广咨询seo网站推广专员
  • 企业营销型网站团队百度seo排名优化教程
  • 安徽平台网站建设哪里好网络策划与营销
  • 做网站接广告赚钱么凡科建站和华为云哪个好
  • 成都网站建设科技公seo营销外包公司
  • 重庆有哪些做网站 小程序的百度搜索引擎的特点
  • 仁怀哪里可以做网站自动秒收录网
  • 重庆市建设局网站推广软件一键发送
  • 合肥网络推广网络运营网站seo诊断分析和优化方案
  • 网站优化公司免费咨询sem优化推广
  • 个人做网站赚钱么宁波seo推荐推广平台
  • 员工支付做网站的费用分录成都营销型网站制作
  • 专业做网站的公司邢台专业做网站关键词搜索优化
  • 电商网站建设方案模板杭州百度首页优化
  • 网站建设服务价格东莞市网站建设
  • 网站开发所需要的的环境佛山网络推广哪里好
  • php网站的优点关键路径
  • 电子政务与网站建设 总结湖南网站推广