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

网站建设这块是怎么挣钱做公司网站怎么做手机版

网站建设这块是怎么挣钱,做公司网站怎么做手机版,哪个厂家的logo品牌设计,企业宣传片报价明细前言 首先我们来看看在Spring中为什么要使用异步编程,它能解决什么问题? 什么是异步? 首先我们先来看看一个同步的用户注册例子,流程如下: 异步的方式如下: 在用户注册后将成功结果返回,…

前言

首先我们来看看在Spring中为什么要使用异步编程,它能解决什么问题?

什么是异步?

首先我们先来看看一个同步的用户注册例子,流程如下:
在这里插入图片描述

异步的方式如下:
在这里插入图片描述

在用户注册后将成功结果返回,使用异步的方式来赠送优惠券,接下来我们来看一下代码示例。

示例

第一步:新建配置类,开启@Async功能支持
使用@EnableAsync来开启异步任务支持,@EnableAsync注解可以直接放在SpringBoot启动类上,也可以单独放在其他配置类上。我们这里选择使用单独的配置类SyncConfiguration

新建配置类AsyncConfiguration

@Configuration
@EnableAsync
public class AsyncConfiguration {
}

第二步:在方法上标记异步调用
增加一个Component类,用来进行业务处理,同时添加@Async注解,代表该方法为异步处理。

@Component
public class MemberServiceAsync {private static Logger logger = Logger.getLogger(MemberServiceAsync.class);@Asyncpublic void sendCoupons() {try {logger.info("发送优惠券");Thread.sleep(3000);} catch (InterruptedException e) {e.printStackTrace();}}
}

第三步:在Controller中进行异步方法调用

@RestController
public class MemberService {private static Logger logger = Logger.getLogger(MemberService.class);@Resourceprivate MemberServiceAsync async;@RequestMapping("insertMember")public String insertMember() {logger.info("会员新增数据");async.sendCoupons();return "注册成功";}
}

访问该接口并查看控制台信息

[INFO ] 2023-03-09 19:52:04,433 method:com.mayikt.service.MemberService.insertMember(MemberService.java:19)
会员新增数据
[INFO ] 2023-03-09 19:52:04,439 method:com.mayikt.service.MemberService.insertMember(MemberService.java:21)
注册成功
[INFO ] 2023-03-09 19:52:04,446 method:com.mayikt.service.MemberServiceAsync.sendCoupons(MemberServiceAsync.java:25)
发送优惠券

通过日志可以看到:主线程不需要等待异步方法执行完成,减少了响应时间,提高了接口性能。

通过上面三步我们就可以在SpringBoot中欢乐的使用异步方法来提高我们接口性能了

线程池

为异步操作提供一个线程池,我们在配置类中加上代码

@Configuration
@EnableAsync
public class AsyncConfiguration {@Bean(name = "asyncPoolTaskExecutor")public ThreadPoolTaskExecutor executor() {ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor();//核心线程数taskExecutor.setCorePoolSize(10);//线程池维护线程的最大数量,只有在缓冲队列满了之后才会申请超过核心线程数的线程taskExecutor.setMaxPoolSize(100);//缓存队列taskExecutor.setQueueCapacity(50);//许的空闲时间,当超过了核心线程出之外的线程在空闲时间到达之后会被销毁taskExecutor.setKeepAliveSeconds(200);//异步方法内部线程名称taskExecutor.setThreadNamePrefix("async-");/*** 当线程池的任务缓存队列已满并且线程池中的线程数目达到maximumPoolSize,如果还有任务到来就会采取任务拒绝策略* 通常有以下四种策略:* ThreadPoolExecutor.AbortPolicy:丢弃任务并抛出RejectedExecutionException异常。* ThreadPoolExecutor.DiscardPolicy:也是丢弃任务,但是不抛出异常。* ThreadPoolExecutor.DiscardOldestPolicy:丢弃队列最前面的任务,然后重新尝试执行任务(重复此过程)* ThreadPoolExecutor.CallerRunsPolicy:重试添加当前的任务,自动重复调用 execute() 方法,直到成功*/taskExecutor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());taskExecutor.initialize();return taskExecutor;}
}

在注解上指定bean的名称:@Async(“asyncPoolTaskExecutor”)就可以了

http://www.sczhlp.com/news/107641/

相关文章:

  • 电脑软件和网站怎么做网做英文网站
  • 门户网站方案二维码在线生成
  • 网页制作免费网站建设wordpress放gif图片怎么变静态
  • Https全局wordpress自动优化网站建设咨询
  • 本周计划
  • PPT文件太大?一招「无损」压缩图片,秒变传输小能手!
  • 怎么建立一个属于自己的网站wordpress伪静态教程
  • 国外设计欣赏网站设计个企业网站网页咋弄
  • win2012服务器做网站游客可进的直播
  • 网站开发应如何入账东莞网络推广及优化
  • 网站开发收费标准文档wordpress去除版权
  • 网站建设 源代码网站域名 文件夹
  • 国外做化学申报的网站长春招聘网官网
  • 徐州网站建设方案开发houzz室内设计
  • 常州专业网站建设费用大良营销网站建设价格
  • 有没有那个网站是做点心的如何加强英文网站建设
  • 工信部网站备案查询学做网站多久
  • 旅游网站模板源码有一个姑娘莱芜的莱芜的
  • 上杭网站开发网络运营需要什么学历
  • 哈尔滨道外区建设局官方网站可以免费浏览的网站
  • 网站访问者qq国内近期新闻热点大事件
  • 网站设计的介绍模板电商运营中如何做好证据的保全
  • 网站建设一条龙全包如何加强企业网站建设论文
  • 每年网站备案抽查天津住房城乡建设网站
  • 杭州 高端网站定制做内容的网站
  • wp_query wordpress蝙蝠侠seo
  • 公司网站建设入哪科目塔罗牌手机网站制作
  • 国外网站欣赏新东方一对一辅导价格
  • 速成网站秦皇岛做网站的公司哪家好
  • 个人网站首页界面手机商城设计