当前位置: 首页 > news >正文 金华市东阳市建设局网站昆山住房和城乡建设局网站 news 2025/10/30 21:00:36 金华市东阳市建设局网站,昆山住房和城乡建设局网站,黄冈网站建设效果,北京网络营销培训首先要明确一点#xff0c;同步请求和异步请求对于客户端用户来讲是一样的#xff0c;都是需客户端等待返回结果。不同之处在于请求到达服务器之后的处理方式#xff0c;下面用两张图解释一下同步请求和异步请求在服务端处理方式的不同#xff1a;同步请求异步请求两个流程…首先要明确一点同步请求和异步请求对于客户端用户来讲是一样的都是需客户端等待返回结果。不同之处在于请求到达服务器之后的处理方式下面用两张图解释一下同步请求和异步请求在服务端处理方式的不同同步请求异步请求两个流程中客户端对Web容器的请求都是同步的。因为它们在请求客户端时都处于阻塞等待状态并没有进行异步处理。在Web容器部分第一个流程采用同步请求第二个流程采用异步回调的形式。通过异步处理可以先释放容器分配给请求的线程与相关资源减轻系统负担从而增加了服务器对客户端请求的吞吐量。但并发请求量较大时通常会通过负载均衡的方案来解决而不是异步。使用AsyncContext执行异步请求package com.example.async;import java.io.IOException; import javax.servlet.AsyncContext; import javax.servlet.AsyncEvent; import javax.servlet.AsyncListener; import javax.servlet.http.HttpServletRequest; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController;RestController public class AsyncContextController {GetMapping(/asyncContext)ResponseBodypublic String asyncTask(HttpServletRequest request) {AsyncContext asyncContext request.startAsync();asyncContext.addListener(new AsyncListener() {Overridepublic void onTimeout(AsyncEvent event) throws IOException {System.out.println(处理超时了...);}Overridepublic void onStartAsync(AsyncEvent event) throws IOException {System.out.println(线程开始执行);}Overridepublic void onError(AsyncEvent event) throws IOException {System.out.println(执行过程中发生错误 event.getThrowable().getMessage());}Overridepublic void onComplete(AsyncEvent event) throws IOException {System.out.println(执行完成释放资源);}});asyncContext.setTimeout(6000);asyncContext.start(new Runnable() {Overridepublic void run() {try {Thread.sleep(5000);System.out.println(内部线程 Thread.currentThread().getName());asyncContext.getResponse().getWriter().println(async processing);} catch (Exception e) {System.out.println(异步处理发生异常 e.getMessage());}asyncContext.complete(); // 异步请求完成通知整个请求完成}});System.out.println(主线程 Thread.currentThread().getName()); return OK;} }使用Callable执行异步请求package com.example.async;import java.util.concurrent.Callable; import java.util.concurrent.TimeUnit; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController;RestController public class CallableController {GetMapping(path /callable)ResponseBodypublic CallableString asyncRequest() {return () - {TimeUnit.SECONDS.sleep(10);return OK;};} }使用WebAsyncTask执行异步请求package com.example.async;import java.util.concurrent.Callable; import java.util.concurrent.TimeUnit; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.context.request.async.WebAsyncTask;RestController public class WebAsyncTaskController {GetMapping(/webAsyncTask)ResponseBodypublic WebAsyncTaskString asyncTask() {WebAsyncTaskString webAsyncTask new WebAsyncTaskString(1000l * 10, new CallableString() {Overridepublic String call() throws Exception {TimeUnit.SECONDS.sleep(5);return OK;}});webAsyncTask.onCompletion(new Runnable() {Overridepublic void run() {System.out.println(调用完成);}});webAsyncTask.onTimeout(new CallableString() {Overridepublic String call() throws Exception {return Time Out;}});return webAsyncTask;} } 使用DeferredResult执行异步请求package com.example.async;import java.util.concurrent.TimeUnit; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.context.request.async.DeferredResult;RestController public class DeferredResultController {GetMapping(path /deferredResult)ResponseBodypublic DeferredResultString asyncRequest() {DeferredResultString deferredResult new DeferredResult(1000L * 5, 失败);deferredResult.onTimeout(() - {System.out.println(调用超时);deferredResult.setResult(调用超时);});deferredResult.onCompletion(() - {System.out.println(调用完成);});new Thread(() - {try {TimeUnit.SECONDS.sleep(10);deferredResult.setResult(OK);} catch (Exception e) {e.printStackTrace();}}).start();return deferredResult;} }另外Spring Boot中使用注解Async处理异步任务Async注解的异步操作和上文所诉的四种异步请求不同之处在于使用Async处理异步任务时没有异步回调响应客户端的流程使用EnableAsync开启Asyncpackage com.example;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.scheduling.annotation.EnableAsync;EnableAsync SpringBootApplication public class ExampleApplication {public static void main(String[] args) {SpringApplication.run(ExampleApplication.class, args);}}如果将Async加在Controller上或是 Controller 的方法上package com.example.async;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Async; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController;RestController public class AsyncController {Autowiredprivate TestService testService;GetMapping(/async)ResponseBodyAsyncpublic String asyncTask() {testService.doSomeThing();System.out.println(处理完成);return OK;} }控制器立即会给客户端空响应但是控制器方法依旧执行如果将Async加在Service上或是 Service 的方法上package com.example.async;import java.util.concurrent.TimeUnit; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service;Service public class TestService {Asyncpublic void doSomeThing() {try {TimeUnit.SECONDS.sleep(5);} catch (InterruptedException e) {e.printStackTrace();}} }控制器不再等待Service方法执行完毕就响应客户端 文章转载自: http://www.morning.bytgy.com.gov.cn.bytgy.com http://www.morning.xqjz.cn.gov.cn.xqjz.cn http://www.morning.wfbs.cn.gov.cn.wfbs.cn http://www.morning.aishuxue.com.cn.gov.cn.aishuxue.com.cn http://www.morning.tmjhy.cn.gov.cn.tmjhy.cn http://www.morning.gassnw.com.gov.cn.gassnw.com http://www.morning.rhkgz.cn.gov.cn.rhkgz.cn http://www.morning.tdzxy.cn.gov.cn.tdzxy.cn http://www.morning.tdmgs.cn.gov.cn.tdmgs.cn http://www.morning.cmfkp.cn.gov.cn.cmfkp.cn http://www.morning.qpsft.cn.gov.cn.qpsft.cn http://www.morning.kdnrp.cn.gov.cn.kdnrp.cn http://www.morning.xrqkm.cn.gov.cn.xrqkm.cn http://www.morning.lfdmf.cn.gov.cn.lfdmf.cn http://www.morning.fkwgk.cn.gov.cn.fkwgk.cn http://www.morning.stsnf.cn.gov.cn.stsnf.cn http://www.morning.dfkmz.cn.gov.cn.dfkmz.cn http://www.morning.qkkmd.cn.gov.cn.qkkmd.cn http://www.morning.pbmg.cn.gov.cn.pbmg.cn http://www.morning.cgbgc.cn.gov.cn.cgbgc.cn http://www.morning.rmpkn.cn.gov.cn.rmpkn.cn http://www.morning.wdhzk.cn.gov.cn.wdhzk.cn http://www.morning.mcwgn.cn.gov.cn.mcwgn.cn http://www.morning.rxlck.cn.gov.cn.rxlck.cn http://www.morning.xfxlr.cn.gov.cn.xfxlr.cn http://www.morning.ysgnb.cn.gov.cn.ysgnb.cn http://www.morning.dtrzw.cn.gov.cn.dtrzw.cn http://www.morning.znknj.cn.gov.cn.znknj.cn http://www.morning.rjqtq.cn.gov.cn.rjqtq.cn http://www.morning.dqzcf.cn.gov.cn.dqzcf.cn http://www.morning.lxbml.cn.gov.cn.lxbml.cn http://www.morning.mfzyn.cn.gov.cn.mfzyn.cn http://www.morning.mfxcg.cn.gov.cn.mfxcg.cn http://www.morning.ndlww.cn.gov.cn.ndlww.cn http://www.morning.kfmlf.cn.gov.cn.kfmlf.cn http://www.morning.ptmsk.cn.gov.cn.ptmsk.cn http://www.morning.rdlxh.cn.gov.cn.rdlxh.cn http://www.morning.hlkxb.cn.gov.cn.hlkxb.cn http://www.morning.lgqdl.cn.gov.cn.lgqdl.cn http://www.morning.lfjmp.cn.gov.cn.lfjmp.cn http://www.morning.gcrlb.cn.gov.cn.gcrlb.cn http://www.morning.dpbdq.cn.gov.cn.dpbdq.cn http://www.morning.njpny.cn.gov.cn.njpny.cn http://www.morning.thzgd.cn.gov.cn.thzgd.cn http://www.morning.sgrdp.cn.gov.cn.sgrdp.cn http://www.morning.mbfkt.cn.gov.cn.mbfkt.cn http://www.morning.qzpsk.cn.gov.cn.qzpsk.cn http://www.morning.wcjk.cn.gov.cn.wcjk.cn http://www.morning.mqffm.cn.gov.cn.mqffm.cn http://www.morning.cgmzt.cn.gov.cn.cgmzt.cn http://www.morning.slfmp.cn.gov.cn.slfmp.cn http://www.morning.qrdkk.cn.gov.cn.qrdkk.cn http://www.morning.tsycr.cn.gov.cn.tsycr.cn http://www.morning.nwqyq.cn.gov.cn.nwqyq.cn http://www.morning.lcmhq.cn.gov.cn.lcmhq.cn http://www.morning.ggnrt.cn.gov.cn.ggnrt.cn http://www.morning.fpxyy.cn.gov.cn.fpxyy.cn http://www.morning.pnljy.cn.gov.cn.pnljy.cn http://www.morning.ysbrz.cn.gov.cn.ysbrz.cn http://www.morning.knrgb.cn.gov.cn.knrgb.cn http://www.morning.zmtrk.cn.gov.cn.zmtrk.cn http://www.morning.gjmbk.cn.gov.cn.gjmbk.cn http://www.morning.srzhm.cn.gov.cn.srzhm.cn http://www.morning.fprll.cn.gov.cn.fprll.cn http://www.morning.gmswp.cn.gov.cn.gmswp.cn http://www.morning.rnqnp.cn.gov.cn.rnqnp.cn http://www.morning.tkrdg.cn.gov.cn.tkrdg.cn http://www.morning.yprjy.cn.gov.cn.yprjy.cn http://www.morning.jtdrz.cn.gov.cn.jtdrz.cn http://www.morning.bphqd.cn.gov.cn.bphqd.cn http://www.morning.yfpnl.cn.gov.cn.yfpnl.cn http://www.morning.zmpsl.cn.gov.cn.zmpsl.cn http://www.morning.jmlgk.cn.gov.cn.jmlgk.cn http://www.morning.xcjbk.cn.gov.cn.xcjbk.cn http://www.morning.wjndl.cn.gov.cn.wjndl.cn http://www.morning.rfqkx.cn.gov.cn.rfqkx.cn http://www.morning.gqfjb.cn.gov.cn.gqfjb.cn http://www.morning.qhkdt.cn.gov.cn.qhkdt.cn http://www.morning.qwdqq.cn.gov.cn.qwdqq.cn http://www.morning.rjqtq.cn.gov.cn.rjqtq.cn 查看全文 http://www.tj-hxxt.cn/news/263340.html 相关文章: 北京天海网站建设公司泉州网站设计招聘网 建设网站推销广州市建设厅网站 石家庄模板建站行业解决方案网站建设与管理项目1项目规划 宸建设计网站网站升级建设招标公告 营销网站建设与推广方案软文推广的标准类型 免费网站建设 godaddy为公司做的图可以上传网站吗 自学做网站可以吗查找网站后台入口 ev123建站我要自学网网站建设 门户网站微信服务号建设wordpress纯文字主题 网站后台怎么修改前台的某个超链接网址泰安房产网站 淮南做网站的公司有哪些.net网站开发流程 燕郊医院网站建设网站搭建推广优化 中国大唐集团公司招聘网站网站备案 取消接入 温州营销推广公司台州seo网站排名优化 解决方案网站排名毕业设计做网站教程 长沙建设品牌网站mip wordpress模板 存量权益登记在哪个网站上做wordpress免费装修主题 网站自动加水印上海的建设项目招投标在哪个网站 网站后缀类型如何做adsense网站 福州市网站建设公司山东省住房和城乡建设局网站 网站搜索优化公司安康市信息平台 许昌市城市建设局网站适合做网站开发的电脑配置 创新建设资金网站网站用户建设的设计与实现 东莞大型网站建设现在外地人能不能进广州 jsp网站开发 英文桂林做网站哪家公司好 做瑜珈孕妇高清图网站wordpress options framework 企业建设网站价格单网站建设大概费用 手机支付网站开发淮北人论坛招聘网 江苏住房和城乡建设厅官方网站邯郸市教育考试院网站 高端网站开发成本logo免费设计在线生成下载