线程池
但是对于使用了线程池的场景,由于线程池中的线程不会被销毁,会被复用。需要你用TLogInheritableTask
替换Runnable
,否则标签数据会重复:
ExecutorService pool = Executors.newFixedThreadPool(5);
pool.submit(new TLogInheritableTask() {
@Override
public void runTask() {
log.info("我是异步线程日志");
}
});
这样标签数据就能正确打印了。
除了用以上提供的增强类,这里还推荐一个阿里的ThreadLocal框架,也能完美解决TLog线程池场景的标签传递情况
https://github.com/alibaba/transmittable-thread-local
TLog对这个框架也做了支持,关于如何使用,请去上述地址自行查看。说明和用例已经写的非常清晰了。
帮助我们改善文档 (opens new window)
last update: 2022/09/21, 16:00:22