如何在子线程中从ThreadLocal继续对象?

use*_*557 7 java

我在ThreadLocal中传递了一个对象.现在我的当前线程将创建新的Child线程.我希望ThreadLocal中的对象也应继续使用子线程.

有没有办法这样做....?

先感谢您....

Ste*_*n C 23

你需要的是一个InheritableThreadLocal.一个InheritableThreadLocal是从父线程传递(语义的Java"按值调用"),以一个子线程创建后者时.

  • [这个答案](/sf/ask/508193451/#7260192) 表明`InheritableThreadLocal` 将无法使用线程池,因为线程被重用。你怎么看? (2认同)
  • 它是正确的。如果使用线程池,则无法使用线程局部变量在父线程和子线程之间传递值。但这不是 >>this<< 问题要问的。仔细阅读第二句话。它隐含地排除了线程池的使用。将其与另一个问题进行比较。他们在这个重要方面是不同的。 (2认同)

How*_*ard 1

ThreadLocal您可以通过该方法从您的方法检索对象本身get(),并将此引用传递给您的子线程。

如果您想与子线程共享它,请参阅其他答案。