我看到了下面的问题。答案是使用信号量,但这并没有回答我在问题中遇到的另一个问题。
使用InheritableThreadLocal与ThreadPoolExecutor -- 或 -- 不重用线程的ThreadPoolExecutor
我有一个父线程,为每个新请求设置一些唯一标识符,并提交2个可运行任务到线程池,即2个线程。对于初始请求,在父线程中设置的InheritedThreadLocal的值被正确地传播到子线程。对于下一个请求,子线程没有接收到父线程设置的最新InheritedThreadLocal,并且在ChildThread中使用了旧值。这是因为线程池重用线程,而InheritedThreadLocal只在创建新线程时复制。现在我该如何在线程池场景中将最新的InheritedThreadLocal值从父线程传播到子线程?有什么解决方法吗?