Tag: thread local

将ThreadLocal传播到从ExecutorService获取的新线程

我使用ExecutorService和Future( 这里是示例代码)在一个具有超时的单独线程中运行进程(线程“生成”发生在AOP方面)。 现在,主线程是Resteasy请求。 Resteasy使用一个或多个ThreadLocal变量来存储我需要在Rest方法调用中的某个时刻检索的一些上下文信息。 问题是,由于Resteasy线程在新线程中运行,因此ThreadLocal变量将丢失。 将Resteasy使用的任何ThreadLocal变量“传播”到新线程的最佳方法是什么? 似乎Resteasy使用多个ThreadLocal变量来跟踪上下文信息,我想“盲目地”将所有信息传递给新线程。 我已经查看了子类化ThreadPoolExecutor并使用beforeExecute方法将当前线程传递给池,但我找不到将ThreadLocal变量传递给池的方法。 有什么建议吗? 谢谢

ThreadLocal在servlet中存储ServletRequest和Response:对于什么?

一旦我遇到了一个模式,将ServletRequest和响应对象放到servlet的本地ThreadLocal变量中。 servlet类还有获取当前请求和响应对象的方法。 因此,为了获得这些对象,您仍然需要使用servlet对象。 拥有这些ThrealLocal局部变量有什么意义?