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

html代码入门基础四川seo哪里有

html代码入门基础,四川seo哪里有,福州网站备案,上海网站开发售后服务在开发过程中#xff0c;我们难免会因为性能、实时响应等#xff0c;需要异步处理的一些事务#xff0c;并且在子线程中有时我们还需要获取主线程相关的参数。下面有若干方案可以实现上述场景#xff0c;但会出现一定的问题。 场景1-基础场景 在主线程中开启子线程#x… 在开发过程中我们难免会因为性能、实时响应等需要异步处理的一些事务并且在子线程中有时我们还需要获取主线程相关的参数。下面有若干方案可以实现上述场景但会出现一定的问题。 场景1-基础场景 在主线程中开启子线程在子线程中获取主线程的参数。 重点子线程中逻辑处理时间较短在主线程结束前获取主线程的参数。 package com.lihao.controller;import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;import javax.servlet.http.HttpServletRequest; import java.util.concurrent.ExecutorService; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit;/*** author lihao*/ RestController RequestMapping(/test1) public class Test1 {/*** 自定义线程池*/private ExecutorService executor new ThreadPoolExecutor(Runtime.getRuntime().availableProcessors(),Runtime.getRuntime().availableProcessors(),5,TimeUnit.MINUTES,new LinkedBlockingQueue(100),Thread::new,new ThreadPoolExecutor.AbortPolicy());GetMapping(/asyncTest)public String asyncTest(HttpServletRequest request) {request.setAttribute(key1,value1);// 异步处理任务executor.submit(() - doExe(request));return OK;}public void doExe(HttpServletRequest request){System.out.println(值 request.getAttribute(key1));} }执行结果 值value1我们可以正常拿到主线程的参数。 场景2-场景1的变种 在主线程中开启子线程在子线程中获取主线程的参数。 重点子线程在执行一段时间后再获取主线程的参数这个时候主线程已执行完成了。 GetMapping(/asyncTest)public String asyncTest(HttpServletRequest request) {request.setAttribute(key1,value1);// 异步处理任务executor.submit(() - doExe(request,1000L));return OK;}public void doExe(HttpServletRequest request,long sleepTime){try {Thread.sleep(sleepTime);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(值 request.getAttribute(key1));} 执行结果 值null由于子线程sleep了一秒这个时候主线程已经执行完成子线程如果想继续获取主线程的参数就会拿不到值。 场景3-场景1的完善 在主线程中开启子线程在子线程中获取主线程的参数。 重点子线程在执行一段时间后再获取主线程的参数主线程需要等待子线程执行完成后再结束。 GetMapping(/asyncTest)public String asyncTest(HttpServletRequest request) {request.setAttribute(key1,value1);// 异步处理任务Future? future executor.submit(() - doExe(request, 10000L));try {future.get();} catch (InterruptedException | ExecutionException e) {throw new RuntimeException(e);}return OK;}public void doExe(HttpServletRequest request,long sleepTime){try {Thread.sleep(sleepTime);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(值 request.getAttribute(key1));}虽然子线程执行时间较长但仍可以获取主线程的参数主线程在子线程执行完成后再结束。 主要技术通过future.get();来使主线程阻塞。 缺点主线程等待时间较长消息无法实时返回需要等待子线程执行完成后再返回。 场景4-场景1、2、3的优化 在主线程中开启子线程在子线程中获取主线程的参数。 重点子线程在执行一段时间后再获取主线程的参数主线程无需要等待子线程执行完成可立即结束。 GetMapping(/asyncTest)public String asyncTest(HttpServletRequest request) {request.setAttribute(key1,value1);// 开启异步AsyncContext asyncContext request.startAsync();executor.submit(() - doExe(asyncContext,request, 10000L));return OK;}public void doExe(AsyncContext asyncContext,HttpServletRequest request,long sleepTime){try {Thread.sleep(sleepTime);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(值 request.getAttribute(key1));asyncContext.complete();}虽然子线程执行时间较长但仍可以获取主线程的参数主线程无需等待子线程执行完成可立即返回。 核心技术点 开启异步 AsyncContext asyncContext request.startAsync();子线程执行完后调用 asyncContext.complete(); 具体原理可阅读源码。 彩蛋 场景4在部分框架下失效如项目中引用Spring- Security框架等会导致主线程开启子线程后阻塞具体原因待分析。其他场景下可正常使用。
http://www.hkea.cn/news/14474581/

相关文章:

  • 可以免费浏览的网站媒体发稿平台
  • 互联网c2c交易类网站详细策划书3d网站开发
  • 免费制作软件的网站西安教育类网站建设公司
  • 网站备案 座机课程网站资源建设小结
  • 做网站需要ftp吗重庆做商城网站建设
  • 国家建设部网站查询wordpress 聚合6
  • 网站首页设置伪静态设计 网站
  • 北京做网站的大公司wordpress静态路由
  • wordpress学校站模板mvc网站开发之美
  • 绍兴网站建设网站投资网站php源码
  • 一个做问卷调查的网站好湖州市建设中心网站
  • 市中移动网站建设网站域名注册如何填写
  • 迈肯奇迹做网站如何制作餐馆网站
  • 集约化网站建设方案网站备案号链接
  • 苏州园区一站式服务中心wordpress文章名称
  • 常州做网站推广昆明设计网站建设
  • 档案信息网站开发利用兰州企业网络推广方法
  • 佛山网站设计师温州专业网站建设公司
  • 专门做调查的网站巩义旅游网站设计公司
  • 潮品服饰网站建设规划书包装设计接单网站
  • intitle 网站建设做外贸选取哪个网站
  • 高质量摄影作品网站营销型网站的优势
  • 做老师好还是网站编辑好软件开发项目管理办法
  • 深圳建设网站联系电话网站托管好吗
  • 商丘网站建设有限公司互联网推广外包
  • 哈尔滨如何免费制作网站服装设计师有前途吗
  • 昆明网站营销南昌营销型网站建设
  • 苏州市建设局投诉网站网上商城推广
  • 网站备案怎样提交管局如何做阿里巴巴企业网站
  • 网站建设实训考试wordpress 选项卡