gpt4 book ai didi

java - Java中如何从另一个线程访问ThreadLocal中的信息

转载 作者:行者123 更新时间:2023-11-30 02:36:26 25 4
gpt4 key购买 nike

我正在使用 Java Web 应用程序后端。我们有一个 Servlet,它在 init() 方法中具有

public static final ThreadLocal<HttpServletRequest> REQUEST_HOLDER = new ThreadLocal<HttpServletRequest>();

在service()方法中

public void service(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException

Servlet 然后根据请求设置 REQUEST_HOLDER 的值。

REQUEST_HOLDER.set(request);

稍后在 servlet 中,我想在另一个线程上进行一些繁重的处理,但仍然引用来自 ThreadLocal REQUEST_HOLDER 的请求,从技术上讲,它位于不同的线程上。这可能吗?如何? (多线程新手)

虽然这个一般概念已在 ThreadLocal value access across different threads 中得到了很大程度的解决。 ,我想知道 servlet/http 请求是否有任何独特之处可以提供不同的解决方案。如果没有,就不会。

是否还可以采用 REQUEST_HOLDER ThreadLocal 并重写 get() 方法,以便如果它为 null(如从不同线程调用时),它会返回不同的值? - 考虑将请求存储在其他地方并让 get() 返回该值。

最佳答案

另一种不扰乱 ThreadLocal 机制的解决方案是从主线程中的请求对象中提取所有必需的数据,将其放入一个单独的数据对象中,然后将该对象提供给新线程。

关于java - Java中如何从另一个线程访问ThreadLocal中的信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42914621/

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