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

品牌建设的可行性论证seo关键词优化提高网站排名

品牌建设的可行性论证,seo关键词优化提高网站排名,姑苏区住房和建设局网站,大学生免费服务器概述 需求是想在线程池执行任务的时候,在开始前将调用线程的信息传到子线程中,在子线程完成后,再清除传入的数据。 下面使用了spring的ThreadPoolTaskExecutor来实现这个需求. ThreadPoolTaskExecutor 在jdk中使用的是ThreadPoolExecutor…

概述

需求是想在线程池执行任务的时候,在开始前将调用线程的信息传到子线程中,在子线程完成后,再清除传入的数据。

下面使用了springThreadPoolTaskExecutor来实现这个需求.

ThreadPoolTaskExecutor

jdk中使用的是ThreadPoolExecutor,用于自定义线程池。
spring中则是对ThreadPoolExecutor又包了一层,加了一些参数进去ThreadPoolTaskExecutor,然后作为bean注入到springioc容器中.

通常在使用线程池的时候想把调用线程的一些信息传递给子线程(线程池中的线程),一般都是要自己写一个装饰器,然后把装饰器传递给线程池的execute方法。

不过spring中已经有现成的方法了,就在ThreadPoolTaskExecutor中,可以给定自定义的装饰器。

org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor#initializeExecutor
可以看到在初始化的时候会判断是否存在装饰器
在这里插入图片描述

ThreadPoolTaskExecutor使用装饰器传递调用线程信息

这样线程池中的线程在执行的时候都会经过装饰器处理,要注意的是在线程执行完成之后需要把信息清理,不然信息会串的

package org.xxx.common.core.executor.decorator;import org.slf4j.MDC;
import org.springframework.core.task.TaskDecorator;
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.RequestContextHolder;import java.util.Map;/*** 对spring的线程中的线程进行装饰*/public class ContextCopyingDecorator implements TaskDecorator {@Overridepublic Runnable decorate(Runnable runnable) {try {//当前请求上下文RequestAttributes context = RequestContextHolder.currentRequestAttributes();//copy当前调用线程的 ThreadLocalMap 中保存的信息Map<String,String> previous = MDC.getCopyOfContextMap();return () -> {try {//http request上下文塞到当前线程中RequestContextHolder.setRequestAttributes(context);//将调用线程的 ThreadLocalMap 塞到当前线程MDC.setContextMap(previous);runnable.run();} finally {//clearRequestContextHolder.resetRequestAttributes();MDC.clear();}};} catch (IllegalStateException e) {return runnable;}}
}//线程池配置/*** 核心线程数 = cpu 核心数 + 1*/
private final int core = Runtime.getRuntime().availableProcessors() + 1;private ScheduledExecutorService scheduledExecutorService;@Bean(name = "threadPoolTaskExecutor")
@ConditionalOnProperty(prefix = "thread-pool", name = "enabled", havingValue = "true")
public ThreadPoolTaskExecutor threadPoolTaskExecutor(ThreadPoolProperties threadPoolProperties) {ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();executor.setCorePoolSize(threadPoolProperties.getCoreSize());executor.setMaxPoolSize(threadPoolProperties.getMaxCoreSize());if(threadPoolProperties.getCoreSize() == 0) executor.setCorePoolSize(core);if(threadPoolProperties.getMaxCoreSize() == 0) executor.setMaxPoolSize(core * 2);//线程池队列大小executor.setQueueCapacity(threadPoolProperties.getQueueCapacity());//线程空闲存活时间executor.setKeepAliveSeconds(threadPoolProperties.getKeepAliveSeconds());//线程池拒绝时交由调用线程执行executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());//装饰线程池中的线程executor.setTaskDecorator(new ContextCopyingDecorator());return executor;
}
http://www.yidumall.com/news/82914.html

相关文章:

  • 网页设计作业个人网站百度竞价广告点击器
  • 宠物网站建设的目的广州四楚seo顾问
  • 电商网站都是用什么做的优化大师优化项目有哪些
  • 网站建设与维护本科教材seo在线优化平台
  • 个人做论坛网站需要哪些备案网站页面优化内容包括哪些
  • 民治制作网站新乡网站优化公司
  • 东营专业网站建设公司电话seo免费入门教程
  • 弄一个电影网站怎么做网站制作设计
  • 云阿里云做网站济南专业seo推广公司
  • 网站服务器好营销的方法和技巧
  • 基于php网站开发环境河南郑州最新事件
  • 中心网站建设方法中国职业培训在线平台
  • 怎样向网站上传照片长沙网站优化效果
  • 东莞常平做网站公司直播营销的优势有哪些
  • 和嗲囡囡和做的网站全网营销老婆第一人
  • 山西百度公司做网站的昆明百度关键词优化
  • 一个小型网站开发成本网站搜索优化公司
  • 海北高端网站建设哪家好百度搜索资源平台提交
  • 旅游网站建设项目厦门seo网站优化
  • 视频网站怎么做可以播放电视剧网站做优化一开始怎么做
  • wordpress_子网站重命名推广赚钱app
  • 网站建设 秦皇岛公司泰州seo公司
  • 企业网络营销策划方案设计的例子seo系统培训哪家好
  • 在哪里购买域名seo外包资讯
  • 专门做有机食品的网站长沙关键词自然排名
  • 帝国cms做视频网站企业宣传网站
  • 网站多少页面合适本周时事新闻概要10条
  • 聊城做网站多少钱大数据培训班出来能就业吗
  • 外贸企业网站对外贸的重要性制作公司网站的公司
  • 企业网站定制公司百度在线下载