小编Sup*_*pun的帖子

通过Java静态方法编写log4j2日志时包含ThreadContext - 它是否是线程安全的?

在Web服务应用程序中,我使用静态方法设置log4j ThreadContext变量以进行日志记录,如下所示,

public static void setLogParams(String company_id, String userId) {
    ThreadContext.put("company_id_val", company_id);
    ThreadContext.put("user_id_val", userId);
}
Run Code Online (Sandbox Code Playgroud)

每个Web服务请求最初都会调用上面的方法,然后loj4j Logger object用于完成剩下的工作.以上给定值每次都不相同,可能会改变请求请求.

我的问题:上面的场景是线程安全的吗?不同的Web服务请求是否共享相同的内容company_id,user_id因为这两个参数都保持相同的引用?那会很混乱.我应该使用非静态方法吗?

我确实经历了下面的类似问题

如果非同步静态方法不修改静态类变量,那么它们是否安全?

但我需要澄清一下.

java concurrency web-services log4j thread-safety

2
推荐指数
1
解决办法
3250
查看次数

标签 统计

concurrency ×1

java ×1

log4j ×1

thread-safety ×1

web-services ×1