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

可以做企业宣传的网站百度手机助手app下载安装

可以做企业宣传的网站,百度手机助手app下载安装,怎么申请网页,wordpress 开发小程序有了InheritableThreadLocal为啥还需要TransmittableThreadLocal? 典型回答 InheritableThreadLocal是用于主子线程之间参数传递的,但是,这种方式有一个问题,那就是必须要是在主线程中手动创建的子线程才可以,而现在池…

有了InheritableThreadLocal为啥还需要TransmittableThreadLocal?

典型回答

InheritableThreadLocal是用于主子线程之间参数传递的,但是,这种方式有一个问题,那就是必须要是在主线程中手动创建的子线程才可以,而现在池化技术非常普遍了,很多时候线程都是通过线程池进行创建和复用的,这时候InheritableThreadLocal就不行了。 TransmittableThreadLocal是阿里开源的一个方案 (开源地址) ,这个类继承并加强InheritableThreadLocal类。用来实现线程之间的参数传递,一经常被用在以下场景中:
1 分布式跟踪系统 或 全链路压测(即链路打标)
2 日志收集记录系统上下文
3 Session级Cache
4 应用容器或上层框架跨应用代码给下层SDK传递信息

使用方式

先需要导入依赖:

<dependency> <groupId>com.alibaba</groupId> <artifactId>transmittable-thread-local</artifactId><version>2.14.2</version>
</dependency>

对于简单的父子线程之间参数传递,可以用以下方式:

TransmittableThreadLocal<String> context = new TransmittableThreadLocal<>();
// 在父线程中设置 
context.set("value-set-in-parent"); 
// 在子线程中可以读取,值是"value-set-in-parent" 
String value = context.get();

如果在线程池中,可以用如下方式使用:

TransmittableThreadLocal<String> context = new TransmittableThreadLocal<>(); // 在父线程中设置
context.set("value-set-in-parent");
Runnable task = new RunnableTask();// 额外的处理,生成修饰了的对象
ttlRunnable Runnable ttlRunnable = TtlRunnable.get(task);
executorService.submit(ttlRunnable);// Task中可以读取,值是"value-set-in-parent"
String value = context.get();

除了Runnable,Callable也支持:

TransmittableThreadLocal<String> context = new TransmittableThreadLocal<>();
// 在父线程中设置 context.set("value-set-in-parent");
Callable call = new CallableTask();
// 额外的处理,生成修饰了的对象
ttlCallable Callable ttlCallable = TtlCallable.get(call);
executorService.submit(ttlCallable);
// Call中可以读取,值是"value-set-in-parent"

也可以直接用在线程池上,而不是Runnable和Callable上:

ExecutorService executorService = ...
// 额外的处理,生成修饰了的对象
executorService executorService = TtlExecutors.getTtlExecutorService(executorService); 
TransmittableThreadLocal<String> context = new TransmittableThreadLocal<>(); 
// 在父线程中设置 context.set("value-set-in-parent");
Runnable task = new RunnableTask();
Callable call = new CallableTask();
executorService.submit(task);
executorService.submit(call);
// Task或是Call中可以读取,值是"value-set-in-parent" String value = context.get();
http://www.dinnco.com/news/46428.html

相关文章:

  • seo门户网站优化网站建站价格
  • 怎么做网站推推广文章的注意事项
  • 网站建设方案及报价单百度搜索网址大全
  • 公司给别人做的网站违法的吗网站优化外包
  • 重庆网站建设公司模板百度云电脑版网站入口
  • 大型的网站建设关键词排名优化教程
  • asp网站域名授权陕西seo公司
  • 静态网站怎么申请网站详细步骤
  • 网站建设费税率多少app推广拉新工作可靠吗
  • 小白怎么做淘宝客网站seo系统源码出售
  • 做网站的开源代码长春seo优化企业网络跃升
  • 公司网站域名如何申请成都最新疫情
  • 网站域名更换是怎么做的杭州seo按天计费
  • 沧州疫情最新情况福建seo关键词优化外包
  • 做我女朋友好不好套路网站交换友情链接的渠道
  • 乌鲁木齐网站建设报价外汇seo公司
  • 网络运营推广方式有哪些搜索引擎优化排名工具
  • 乐清门户网站网络营销外包推广
  • php做的静态网站怎么加密如何进行网站的推广
  • nodejs做企业网站淘宝指数官网入口
  • 如何选择网站营销公司互联网营销专业
  • html旅游网站制作代码bt种子搜索
  • 河北住房和城乡建设厅网站semester
  • 门户网站开发需求分析互联网销售模式
  • 头条网站开发中山seo推广优化
  • 手机视频网站建站广东省最新疫情
  • 做网站只有搜网址吗站长之家站长工具
  • 做音乐的网站设计手把手教你优化网站
  • 企业网站首页效果图设计与制作免费网页空间到哪申请
  • 怎么做网站做站点seo排名优化公司哪家好