Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
阿啄debugIT
transmittable-thread-local
提交
c0c3a179
T
transmittable-thread-local
项目概览
阿啄debugIT
/
transmittable-thread-local
与 Fork 源项目一致
从无法访问的项目Fork
通知
8
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
transmittable-thread-local
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
c0c3a179
编写于
5月 29, 2018
作者:
oldratlee
🔥
提交者:
Yang Fang
5月 29, 2018
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
improve javadoc
上级
cd983077
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
54 addition
and
13 deletion
+54
-13
src/main/java/com/alibaba/ttl/TransmittableThreadLocal.java
src/main/java/com/alibaba/ttl/TransmittableThreadLocal.java
+37
-13
src/main/java/com/alibaba/ttl/TtlCallable.java
src/main/java/com/alibaba/ttl/TtlCallable.java
+1
-0
src/main/java/com/alibaba/ttl/TtlRunnable.java
src/main/java/com/alibaba/ttl/TtlRunnable.java
+1
-0
src/main/java/com/alibaba/ttl/package-info.java
src/main/java/com/alibaba/ttl/package-info.java
+3
-0
src/main/java/com/alibaba/ttl/threadpool/TtlExecutors.java
src/main/java/com/alibaba/ttl/threadpool/TtlExecutors.java
+7
-0
src/main/java/com/alibaba/ttl/threadpool/agent/TtlTransformer.java
...java/com/alibaba/ttl/threadpool/agent/TtlTransformer.java
+5
-0
未找到文件。
src/main/java/com/alibaba/ttl/TransmittableThreadLocal.java
浏览文件 @
c0c3a179
...
...
@@ -161,13 +161,37 @@ public class TransmittableThreadLocal<T> extends InheritableThreadLocal<T> {
}
/**
* {@link Transmitter} is <b><i>internal</i></b> manipulation api of {@link TransmittableThreadLocal},
* expose internal {@link #capture()}/{@link #replay(Object)}/{@link #restore(Object)} operation
* of {@link TransmittableThreadLocal} values for middleware integration,
* like {@link TtlRunnable} and {@link TtlCallable}.
* {@link Transmitter} transmit all {@link TransmittableThreadLocal} of current thread to
* any other thread by static method {@link #capture()} => {@link #replay(Object)} => {@link #restore(Object)} (aka {@code CRR} operation).
* <p>
* {@link Transmitter} can transmit all {@link TransmittableThreadLocal} of current thread to
* any other thread by {@link #capture()} => {@link #replay(Object)} => {@link #restore(Object)}.
* {@link Transmitter} is <b><i>internal</i></b> manipulation api for <b><i>framework/middleware integration</i></b>;
* In general, you will <b><i>never</i></b> use it in the <i>biz/application code</i>!
* <p>
* Below is the example:
*
* <pre><code>
* ///////////////////////////////////////////////////////////////////////////
* // in thread 1, capture all TransmittableThreadLocal values of thread 1
* ///////////////////////////////////////////////////////////////////////////
*
* Object captured = Transmitter.capture();
*
* ///////////////////////////////////////////////////////////////////////////
* // in thread 2
* ///////////////////////////////////////////////////////////////////////////
*
* // replay all TransmittableThreadLocal values from thread 1
* Object backup = Transmitter.replay(captured);
* try {
* // your biz logic, run with the TransmittableThreadLocal values of thread 1
* ...
* } finally {
* // restore the TransmittableThreadLocal of thread 2 when replay
* Transmitter.restore(backup);
* }
* </code></pre>
* <p>
* see the implementation code of {@link TtlRunnable} and {@link TtlCallable} for more actual code sample.
*
* @author Yang Fang (snoop dot fy at gmail dot com)
* @see TtlRunnable
...
...
@@ -178,7 +202,7 @@ public class TransmittableThreadLocal<T> extends InheritableThreadLocal<T> {
/**
* Capture all {@link TransmittableThreadLocal} values in current thread.
*
* @return
captured {@link TransmittableThreadLocal}
* @return
the captured {@link TransmittableThreadLocal} values
*/
public
static
Object
capture
()
{
Map
<
TransmittableThreadLocal
<?>,
Object
>
captured
=
new
HashMap
<>();
...
...
@@ -189,11 +213,11 @@ public class TransmittableThreadLocal<T> extends InheritableThreadLocal<T> {
}
/**
* Replay the captured {@link TransmittableThreadLocal} values
by {@link #capture()}
* a
fter backup {@link TransmittableThreadLocal} values in current thread
.
* Replay the captured {@link TransmittableThreadLocal} values
from {@link #capture()},
* a
nd return the backup {@link TransmittableThreadLocal} values in current thread before replay
.
*
* @param captured captured {@link TransmittableThreadLocal} values from other thread
by
{@link #capture()}
* @return backup {@link TransmittableThreadLocal} values before replay
* @param captured captured {@link TransmittableThreadLocal} values from other thread
from
{@link #capture()}
* @return
the
backup {@link TransmittableThreadLocal} values before replay
* @see #capture()
*/
public
static
Object
replay
(
Object
captured
)
{
...
...
@@ -231,9 +255,9 @@ public class TransmittableThreadLocal<T> extends InheritableThreadLocal<T> {
}
/**
* Restore
{@link TransmittableThreadLocal} values backup
from {@link Transmitter#replay(Object)}.
* Restore
the backup {@link TransmittableThreadLocal} values
from {@link Transmitter#replay(Object)}.
*
* @param backup the
{@link TransmittableThreadLocal} values backup
from {@link Transmitter#replay(Object)}
* @param backup the
backup {@link TransmittableThreadLocal} values
from {@link Transmitter#replay(Object)}
*/
public
static
void
restore
(
Object
backup
)
{
@SuppressWarnings
(
"unchecked"
)
...
...
src/main/java/com/alibaba/ttl/TtlCallable.java
浏览文件 @
c0c3a179
...
...
@@ -18,6 +18,7 @@ import static com.alibaba.ttl.TransmittableThreadLocal.Transmitter.restore;
* Use factory method {@link #get(Callable)} to get decorated instance.
*
* @author Jerry Lee (oldratlee at gmail dot com)
* @see com.alibaba.ttl.threadpool.TtlExecutors
* @see java.util.concurrent.Executor
* @see java.util.concurrent.ExecutorService
* @see java.util.concurrent.ThreadPoolExecutor
...
...
src/main/java/com/alibaba/ttl/TtlRunnable.java
浏览文件 @
c0c3a179
...
...
@@ -17,6 +17,7 @@ import static com.alibaba.ttl.TransmittableThreadLocal.Transmitter.restore;
* Use factory methods {@link #get} / {@link #gets} to create instance.
*
* @author Jerry Lee (oldratlee at gmail dot com)
* @see com.alibaba.ttl.threadpool.TtlExecutors
* @see java.util.concurrent.Executor
* @see java.util.concurrent.ExecutorService
* @see java.util.concurrent.ThreadPoolExecutor
...
...
src/main/java/com/alibaba/ttl/package-info.java
浏览文件 @
c0c3a179
...
...
@@ -2,5 +2,8 @@
* TTL API.
*
* @author Jerry Lee (oldratlee at gmail dot com)
* @see com.alibaba.ttl.TransmittableThreadLocal
* @see com.alibaba.ttl.TtlRunnable
* @see com.alibaba.ttl.TtlCallable
*/
package
com.alibaba.ttl
;
src/main/java/com/alibaba/ttl/threadpool/TtlExecutors.java
浏览文件 @
c0c3a179
...
...
@@ -11,6 +11,13 @@ import java.util.concurrent.ScheduledExecutorService;
*
* @author Jerry Lee (oldratlee at gmail dot com)
* @since 0.9.0
* @see java.util.concurrent.Executor
* @see java.util.concurrent.ExecutorService
* @see java.util.concurrent.ThreadPoolExecutor
* @see java.util.concurrent.ScheduledThreadPoolExecutor
* @see java.util.concurrent.Executors
* @see java.util.concurrent.CompletionService
* @see java.util.concurrent.ExecutorCompletionService
*/
public
final
class
TtlExecutors
{
/**
...
...
src/main/java/com/alibaba/ttl/threadpool/agent/TtlTransformer.java
浏览文件 @
c0c3a179
...
...
@@ -23,6 +23,11 @@ import javassist.NotFoundException;
/**
* @author Jerry Lee (oldratlee at gmail dot com)
* @since 0.9.0
* @see java.util.concurrent.Executor
* @see java.util.concurrent.ExecutorService
* @see java.util.concurrent.ThreadPoolExecutor
* @see java.util.concurrent.ScheduledThreadPoolExecutor
* @see java.util.concurrent.Executors
*/
public
class
TtlTransformer
implements
ClassFileTransformer
{
private
static
final
Logger
logger
=
Logger
.
getLogger
(
TtlTransformer
.
class
.
getName
());
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录