可以使用父级的ThreadLocal值修改子级的ThreadLocal吗?

时间:2013-05-07 07:46:17

标签: java multithreading thread-local

我正在使用InheritableThreadLocal,我知道在创建子项时,ThreadLocal的默认值与父线程值相同。但是,如果修改父级ThreadLocal值,我该如何维护它?

有没有办法在父母的ThreadLocal被修改后,他的所有子线程都会收到修改?

编辑:我的父线程中有一个布尔值设置为false。但我有一个条件,当发生这种情况时,我将布尔值设置为true,我也需要为我的初始线程生成的所有子线程也这样做。

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:-1)

  

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

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

  

但是当父级的ThreadLocal值修改时,我怎么能保持这个呢?

保持什么?这里只存在一个ThreadLocal对象。然而,它的行为就是它的表现。