gpt4 book ai didi

Java将数据与当前线程关联

转载 作者:行者123 更新时间:2023-11-30 03:21:55 25 4
gpt4 key购买 nike

我正在开发Web应用程序,该应用程序部署在apache tomcat Web服务器上。我想将数据与http请求的当前线程关联起来。为此,我创建了以下类:

public class ThreadData {

private static final Map<Long, Map<String, String>> data = new HashMap<>();

public static Map<String, String> getDataMap(long threadId) {
if (data.get(threadId) == null) {
data.put(threadId, new HashMap<String, String>());
}

return data.get(threadId);
}

public static void put(String key, String value) {
long threadId = Thread.currentThread().getId();
getDataMap(threadId).put(key, value);
}

public static String get(String key) {
long threadId = Thread.currentThread().getId();
return getDataMap(threadId).get(key);
}
}

我想知道这种解决方案对于这个问题是否正确且安全。

最佳答案

您想要实现的目标由 ThreadLocal 类涵盖,在您的情况下,它是

ThreadLocal<Map<String, String>> data = new ThreadLocal<Map<String, String>>() {
@Override
protected Map<String, String> initialValue() {
return new HashMap<>();
}
};

如果你仍然想使用putget,你可以这样定义它们:

public static void put(String key, String value) {
data.get().put(key, value);
}

public static String get(String key) {
return data.get().get(key);
}

关于Java将数据与当前线程关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31140711/

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