我正在使用ExecutorService和Future在单独的线程中运行一个带有超时的进程(示例代码here)("生成"线程发生在AOP Aspect中)。
现在,主线程是一个Resteasy请求。 Resteasy使用一个或多个ThreadLocal变量来存储一些上下文信息,我需要在Rest方法调用的某个点检索这些信息。问题是,由于Resteasy线程在新线程中运行,ThreadLocal变量会丢失。
最好的方法是将Resteasy使用的任何ThreadLocal变量“传播”到新线程中?似乎Resteasy使用不止一个ThreadLocal变量来跟踪上下文信息,我希望“盲目”地将所有信息传输到新线程。
我尝试过子类化ThreadPoolExecutor
并使用beforeExecute方法将当前线程传递给池,但我找不到将ThreadLocal变量传递给池的方法。
有什么建议吗?
谢谢