0

我正在使用InheritableThreadLocal并且我知道在创建子线程时ThreadLocal将具有与父线程值相同的默认值。ThreadLocal但是当父级的值被修改时,我该如何维护呢?

有没有办法在修改父线程时ThreadLocal,他的所有子线程都收到该修改?

编辑:我在父线程中有一个布尔值设置为 false。但是我有一个条件,当这种情况发生时,我将布尔值设置为 true,并且我还需要对由我的初始线程产生的所有子线程执行此操作。

4

2 回答 2

1

InheritableThreadLocal仅有助于在孩子中设置初始值。它不提供任何其他同步。您必须使用正常的线程同步方法来传播该值。

也就是说,如果您希望所有子项在开始时和父项更改时都具有相同的父项值,那么为什么要给他们所有需要同步的单独对象?为什么不给孩子一个对父母的参考,让他们都检查父母的价值呢?

于 2013-05-07T08:13:43.840 回答
-1

我正在使用可继承ThreadLocal的,并且我知道在创建子项时ThreadLocal,默认值将与父线程值相同。

如果它是继承的,它是同一个对象。一切都是一样的。

但是,当父级的 ThreadLocal 值修改时,我该如何维护呢?

维护什么?这里只有一个ThreadLocal物体存在。然而,它的行为就是它的行为方式。

于 2013-05-07T08:01:45.517 回答