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

绍兴网站建设报价网站跳出率太高

绍兴网站建设报价,网站跳出率太高,西宁网站,毕业设计网站开发要做什么一、线程池的作用 防止资源占用无限的扩张调用过程省去资源的创建和销毁所占用的时间 在上一节中#xff0c;我们的一个异步任务打开了一个线程#xff0c;完成后销毁。在高并发环境下#xff0c;不断的分配新资源#xff0c;可能导致系统资源耗尽。所以为了避免这个问题…一、线程池的作用 防止资源占用无限的扩张调用过程省去资源的创建和销毁所占用的时间 在上一节中我们的一个异步任务打开了一个线程完成后销毁。在高并发环境下不断的分配新资源可能导致系统资源耗尽。所以为了避免这个问题我们为异步任务规划一个线程池。 二、定义线程池 在上述操作中创建一个 线程池配置类TaskConfiguration 并配置一个 任务线程池对象taskExecutor。 Configuration public class TaskConfiguration {Bean(taskExecutor)public Executor taskExecutor() {ThreadPoolTaskExecutor executor new ThreadPoolTaskExecutor();executor.setCorePoolSize(10);executor.setMaxPoolSize(20);executor.setQueueCapacity(200);executor.setKeepAliveSeconds(60);executor.setThreadNamePrefix(taskExecutor-);executor.setRejectedExecutionHandler(new CallerRunsPolicy());return executor;} }上面我们通过使用 ThreadPoolTaskExecutor 创建了一个 线程池同时设置了以下这些参数 线程池属性属性的作用设置初始值核心线程数线程池创建时候初始化的线程数10最大线程数线程池最大的线程数只有在缓冲队列满了之后才会申请超过核心线程数的线程20缓冲队列用来缓冲执行任务的队列200允许线程的空闲时间当超过了核心线程之外的线程在空闲时间到达之后会被销毁60秒线程池名的前缀可以用于定位处理任务所在的线程池taskExecutor-线程池对拒绝任务的处理策略这里采用CallerRunsPolicy策略当线程池没有处理能力的时候该策略会直接在execute方法的调用线程中运行被拒绝的任务如果执行程序已关闭则会丢弃该任务CallerRunsPolicy 创建 AsyncExecutorTask类三个任务的配置和 AsyncTask 一样不同的是 Async 注解需要指定前面配置的 线程池的名称taskExecutor。 Component public class AsyncExecutorTask extends AbstractTask {Async(taskExecutor)public FutureString doTaskOneCallback() throws Exception {super.doTaskOne();System.out.println(任务一当前线程 Thread.currentThread().getName());return new AsyncResult(任务一完成);}Async(taskExecutor)public FutureString doTaskTwoCallback() throws Exception {super.doTaskTwo();System.out.println(任务二当前线程 Thread.currentThread().getName());return new AsyncResult(任务二完成);}Async(taskExecutor)public FutureString doTaskThreeCallback() throws Exception {super.doTaskThree();System.out.println(任务三当前线程 Thread.currentThread().getName());return new AsyncResult(任务三完成);} }在 单元测试 用例中注入 AsyncExecutorTask 对象并在测试用例中执行 doTaskOne()doTaskTwo()doTaskThree() 三个方法。 RunWith(SpringRunner.class) SpringBootTest public class AsyncExecutorTaskTest {Autowiredprivate AsyncExecutorTask task;Testpublic void testAsyncExecutorTask() throws Exception {task.doTaskOneCallback();task.doTaskTwoCallback();task.doTaskThreeCallback();sleep(30 * 1000L);} }执行一下上述的 单元测试可以看到如下结果 开始做任务一 开始做任务三 开始做任务二 完成任务二耗时3905毫秒 任务二当前线程taskExecutor-2 完成任务一耗时6184毫秒 任务一当前线程taskExecutor-1 完成任务三耗时9737毫秒 任务三当前线程taskExecutor-3执行上面的单元测试观察到 任务线程池 的 线程池名的前缀 被打印说明 线程池 成功执行 异步任务 三、优雅地关闭线程池 由于在应用关闭的时候异步任务还在执行导致类似 数据库连接池 这样的对象一并被 销毁了当 异步任务 中对 数据库 进行操作就会出错。 解决方案如下重新设置线程池配置对象新增线程池 setWaitForTasksToCompleteOnShutdown() 和 setAwaitTerminationSeconds() 配置 Bean(taskExecutor) public Executor taskExecutor() {ThreadPoolTaskScheduler executor new ThreadPoolTaskScheduler();executor.setPoolSize(20);executor.setThreadNamePrefix(taskExecutor-);executor.setWaitForTasksToCompleteOnShutdown(true);executor.setAwaitTerminationSeconds(60);return executor; }setWaitForTasksToCompleteOnShutdown(true): 该方法用来设置 线程池关闭 的时候 等待 所有任务都完成后再继续 销毁 其他的 Bean这样这些 异步任务 的 销毁 就会先于 数据库连接池对象 的销毁。setAwaitTerminationSeconds(60): 该方法用来设置线程池中 任务的等待时间如果超过这个时间还没有销毁就 强制销毁以确保应用最后能够被关闭而不是阻塞住。
http://www.hkea.cn/news/14494506/

相关文章:

  • 在线代理访问网站的网址网站转应用
  • 网站建设主要用什么软件seo网站管理招聘
  • js网站下拉置顶代码贵州网站建设hsyunso
  • 网站建设各单位强化沟通协作腾冲网站建设
  • 网站图片设置软件网站站群建设进度
  • 上海龙象建设集团公司网站邯郸oa办公系统
  • 企业网站怎么做中英文切换网络推广网站的方法
  • 济宁网站建设 优化培训可以在手机建网站的
  • 教育培训网站设计南通模板建站定制
  • 佛山模板网站建设免费的网络营销方式有哪些
  • 江门建设企业网站柳州做网站有kv
  • 兰州做网站 咨询兰州做网站公司公司网站公司网站
  • 将网站做成logo怎么做品牌手机网站开发哪家好
  • 优质的广州微网站建设100种宣传方式
  • 西安做网站wordpress软件特点
  • 如何策划网站济南做网站比较好的公司知道吗
  • wordpress可以做下载站吗十大舆情网站
  • 建站要多少钱抖抈短视频app下载安装
  • 青岛企业建站程序wordpress 文章
  • 锦州建设工程信息网站微网站建设制作设计
  • 如何链接自己做的网站霸州建网站
  • 建服装类网站需要考虑的因素纪检监察网站建设背景
  • 郑州做网站 汉狮网络摄影工作室网站设计
  • 做餐饮网站网站开发如何支持ipv6
  • 企业网站运营推广老牌网站建设
  • 做cpa建什么网站好蝌蚪窝一个释放做网站
  • 做图表用的网站朝阳网站
  • 定制型网站建设合同范本自己做网站需要学什么
  • 企业建站搭建有哪些网站可以免费的
  • 网站备案没座机正邦设计总部都空了