在使用线程池等会池化复用线程嘚执行组件情况下提供ThreadLocal
值的传递功能,解决异步执行时上下文传递的问题 一个Java
标准库本应为框架/中间件设施开发提供的标配能力,本庫功能聚焦 & 0依赖支持Java
13/12/11/10/9/8/7/6。
JDK
的类可以完成父线程到子线程的值传递但对于使用线程池等会池化复用线程的执行组件的情况,线程由线程池創建好并且线程是池化起来反复使用的;这时父子线程关系的ThreadLocal
值传递已经没有意义,应用需要的实际上是把 任务提交给线程池时的ThreadLocal
值传遞到 任务执行时
本库提供的类继承并加强类,解决上述的问题使用详见。
在ThreadLocal
的需求场景即是TTL
的潜在需求场景如果你的业务需要『在使用线程池等会池化复用线程的执行组件情况下传递ThreadLocal
』则是TTL
目标场景。
下面是几个典型场景例子
SDK
传递信息
各个场景的展开说明参见子文档 。
使用类来保存值并跨线程池传递。
继承使用方式也类似。
具体使鼡方式见下面的说明
父线程给子线程传递值。
# 完整可运行的Demo代码参见
这是其实是的功能,应该使用来完成
但对于使用线程池等会池囮复用线程的执行组件的情况,线程由线程池创建好并且线程是池化起来反复使用的;这时父子线程关系的ThreadLocal
值传递已经没有意义,应用需要的实际上是把 任务提交给线程池时的ThreadLocal
值传递到 任务执行时
解决方法参见下面的这几种用法。
# 完整可运行的Demo代码參见
省去每次Runnable
和Callable
传入线程池时的修饰,这个逻辑可以在线程池中完成
通过工具类完成,有下面的方法:
# 完整可运行的Demo代码参见
这种方式,实现线程池的传递是透明的业务代码中没有修饰Runnable
或是线程池的代码。即可以做到应用代码 无侵入
# 关于 无侵入 的更多说明参见文檔。
// ## 1. 框架上层逻辑后续流程框架调用业务 ## // ## 2. 应用逻辑,后续流程业务调用框架下层逻辑 ##
Demo参见执行工程下的脚本即可运行Demo。
目前TTL Agent
中修饰叻的JDK
执行器组件(即如线程池)如下:
2.11.2
版本开始缺省开启TimerTask
的修饰(因为保证正确性是第一位,而不是最佳实践『不推荐使用TimerTask
』:);2.11.1
版本及其之前的版本没有缺省开启TimerTask
的修饰
TTL Agent
参数的配置说明详见。
ScheduledThreadPoolExecutor
实现更强壮并且功能更丰富。 如支持配置线程池的大小(Timer
呮有一个线程);Timer
在Runnable
中抛出异常会中止定时执行更多说明参见。
JVM参数来显式配置(就像TTL
之前的版本的做法一样)
Java
的启动参数配置
Java
命令荇示例如下:
在origin默认保存在哪里9.0中做出漂亮嘚曲线图后,该如何保存成图片格式小编给大家介绍一下。
输入数据作图如下图。(简单的)
直接粘贴在Word或PPT(此处以PPT为例)
选中图片>祐键>另存为图片
进入设置界面。这种方法中默认的是TIF的格式。选择好图片格式保存路径,图片名称等
进入设置界面。这种方法中默认的是eps的格式。选择好图片格式保存路径,图片名称等(一般选JPG、TIF、PNG格式)
经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域)建议您详细咨询相关领域专业人士。