gpt4 book ai didi

java - 为应用程序中的所有线程设置 ThreadContext

转载 作者:行者123 更新时间:2023-11-30 06:08:06 27 4
gpt4 key购买 nike

来自这个答案https://stackoverflow.com/a/25125159/4367326我有 routingAppender 工作,但我想为程序中的每个线程设置 ThreadContext

当我设置

ThreadContext.put("logFileName", "TestLogFile");

它按预期适用于主线程和日志,但不适用于我的应用程序中的任何其他线程。我怎样才能做到这一点?

最佳答案

如果您将系统属性 isThreadContextMapInheritable 设置为 true,则每个子线程都将继承父线程的 ThreadContext 状态。但这对执行器不起作用,因此您需要手动将数据从一个线程复制到另一个线程。

更新#2

你可以这样做:

public abstract class ThreadContextRunnable implements Runnable {

private final Map context = ThreadContext.getContext();

@Override
public final void run() {
if (context != null) {
ThreadContext.putAll(context);
}
try {
runWithContext();
} finally {
ThreadContext.clearAll();
}
}

protected abstract void runWithContext();
}

然后你只需要实现 runWithContext 方法。

关于java - 为应用程序中的所有线程设置 ThreadContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40423667/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com