/**
线程池的拒绝策略是在当前线程继续执行
刚开始traceId = 123
提交任务, 等待任务结束, 当前线程的traceId也没了
原因就是他是在当前线程执行, 而包装策略是run方法执行完清掉变量, 所以当前线程的变量就没有了
*/
// 创建任务, 包装任务
Runnable task = new Runnable() {
private String id = traceId;
public void run() {
try {
MDC.put("traceId", id);
process();
} finally {
MDC.clear();
}
}
}
// 提交执行
executor.submit(task);
// join
task.join();
MDC.get("traceId") == null
join后再获取线程变量发现没了,