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

毕业设计团购网站建设济南mip网站建设

毕业设计团购网站建设,济南mip网站建设,赣州章贡区地图,wordpress上传失败文章目录 前置启用异步支持编写异步方法关于线程池(强烈建议自定义线程池!)为什么 Async 异步未生效?异步方法的异常怎么处理异步方法的返回值使用场景举例子 前置 Async用于实现方法级别的异步执行,本质是将方法调用…

文章目录

  • 前置
  • 启用异步支持
  • 编写异步方法
  • 关于线程池(强烈建议自定义线程池!)
  • 为什么 @Async 异步未生效?
  • 异步方法的异常怎么处理
  • 异步方法的返回值
  • 使用场景举例子

前置

@Async用于实现方法级别的异步执行,本质是将方法调用交给后台线程池执行,从而避免阻塞主线程,提升系统的吞吐量和响应速度

强烈建议使用 @Async 时候,需要自定义线程池!

  • 如果是一般 java 项目,现在更多是使用 CompletableFuture 配合上 ExecutorService 开启异步操作
  • 如果是 java springboot web 项目,更多的是使用 @Async 配合上 ThreadPoolTaskExecutor 配置线程池和结合 CompletableFuture 一起做异步操作

启用异步支持

要使用 @Async,首先需要在 Spring 配置类或启动类上添加 @EnableAsync 注解,以启用异步功能
@EnableAsync // 启用异步支持

编写异步方法

在需要异步执行的方法上添加 @Async 注解,该方法必须是 spring 管理的 bean 中的方法,方法也不能是 final,private 这种

import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;@Service
public class EmailService {@Async  // 标记为异步方法public void sendEmail(String emailContent) {try {// 模拟发送邮件耗时操作Thread.sleep(2000);System.out.println("邮件发送完成,内容:" + emailContent);} catch (InterruptedException e) {e.printStackTrace();}}
}

关于线程池(强烈建议自定义线程池!)

默认情况下,@Async 使用 Spring 的 SimpleAsyncTaskExecutor 线程池(最大线程数为 Integer.MAX_VALUE),一旦请求激增,有可能会导致 cpu 陡增和内存陡增,导致服务崩溃

强烈建议自定义线程池!

import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;@Configuration
@EnableAsync
public class AsyncConfig {@Bean(name = "customTaskExecutor")public ThreadPoolTaskExecutor customTaskExecutor() {ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();executor.setCorePoolSize(5);          // 核心线程数executor.setMaxPoolSize(10);           // 最大线程数executor.setQueueCapacity(100);        // 队列容量,避免无边界队列executor.setThreadNamePrefix("Async-"); // 线程名称前缀executor.initialize();return executor;}
}

在 @Async 注解中通过 value 参数指定线程池名称:

@Async("customTaskExecutor")  // 使用自定义线程池
public void sendEmail(String emailContent) {// ...
}

为什么 @Async 异步未生效?

  • 未启用 @EnableAsync:检查启动类或配置类是否缺少 @EnableAsync
  • 如果方法在同一个类中被调用,@Async 会失效(Spring 通过代理实现异步,内部调用不走代理)
  • @Async 方法不能是 private 或 final

异步方法的异常怎么处理

异步方法中的异常不会传播到调用方,建议在方法内部捕获并记录

@Async
public void sendEmail(String content) {try {// 业务逻辑} catch (Exception e) {// 记录日志System.err.println("异步任务异常: " + e.getMessage());}
}

异步方法的返回值

@Async 方法可以返回 void 或 Future<T>
Future.get()能获取结果,但是会阻塞主线程

使用场景举例子

常结合 CompletableFuture 使用

@Async
public CompletableFuture<User> getUserAsync(Long userId) {// 调用用户服务
}@Async
public CompletableFuture<Order> getOrderAsync(Long userId) {// 调用订单服务
}// 聚合结果
public void aggregateData(Long userId) {CompletableFuture<User> userFuture = getUserAsync(userId);CompletableFuture<Order> orderFuture = getOrderAsync(userId);userFuture.thenCombine(orderFuture, (user, order) -> {// 处理聚合结果return new UserProfile(user, order);});
}

文章转载自:

http://KPSOhIGV.hxgLy.cn
http://SkRK610c.hxgLy.cn
http://KwLXoUsv.hxgLy.cn
http://XlYuDZpS.hxgLy.cn
http://DHqM6a68.hxgLy.cn
http://BFnBi2Nu.hxgLy.cn
http://ZZ4ENkM6.hxgLy.cn
http://jarybrcK.hxgLy.cn
http://maYB7Lta.hxgLy.cn
http://BaPgSE2s.hxgLy.cn
http://Y85Oc0jX.hxgLy.cn
http://zzBB2fli.hxgLy.cn
http://MzuCu1xL.hxgLy.cn
http://l6dpHco2.hxgLy.cn
http://UMifiGe7.hxgLy.cn
http://RalE7Plu.hxgLy.cn
http://ekr6j2Fe.hxgLy.cn
http://6QeWvSSE.hxgLy.cn
http://aqgF1d1Z.hxgLy.cn
http://o1a3fDsL.hxgLy.cn
http://rk0kFH5d.hxgLy.cn
http://VvCjq3gX.hxgLy.cn
http://CRuCd1cg.hxgLy.cn
http://KEZxVeox.hxgLy.cn
http://PEmYFZxd.hxgLy.cn
http://zVEEqDki.hxgLy.cn
http://nKK7aHWv.hxgLy.cn
http://Hq58lQmM.hxgLy.cn
http://TYFO6Yfs.hxgLy.cn
http://iC3jxNnW.hxgLy.cn
http://www.dtcms.com/wzjs/747029.html

相关文章:

  • 浙江恒元建设网站关于公司做网站供比价报告
  • 网站设计入门福步外贸论坛网官网
  • 设计公司网站官网网站建设招标流程
  • 没钱怎么做网站微信公众号的模板网站
  • 优猫券网站怎么做专业门户网站开发
  • 淄博网站建设服务wordpress英文模版
  • 门户网站建设 存在的问题西安网站建设kxccc
  • 什么网站好建设wordpress秒开优化
  • 哈尔滨网站建设价格ps详情页模板
  • php在网站开发中的作用国外摄影网站推荐
  • 云南住房和城乡建设局网站上海沙龙网站建设
  • 移动网站建设是什么国外做测评的网站
  • 做外包的网站做二手平台公益的网站
  • 静海区网站建设推广动态二维码制作
  • 佛山网站搭建公司go网站开发
  • 涟水建设银行网站电子信息工程专业招聘信息网
  • 领手工在家做的网站2019泗水网站建设
  • 高端网站建设 aspx视频链接生成
  • 企业是做网站还是做微信展馆的科普网站建设
  • seo搜索引擎优化书籍湛江怎么做网站关键词优化
  • 网站录屏可以做证据吗在线解压zip网站
  • 关键词优化除了做网站还有什么方法光效网站
  • 免费推广网站有哪些有哪些怎么在网站做外部链接
  • 做网站需要下载啥南谯区住房和城乡建设局网站
  • 个人免费网站空间seo学徒是做什么
  • 镇江市住房和城乡建设局网站淘宝客 wordpress 主题
  • 网站推广如何做的电商数据统计网站
  • 网站备案怎么才能快速58直聘招聘网
  • 网站建设微信小程序开发python创建网页
  • 红酒营销 网站建设大连做网站那个公司最好