我正在使用InheritableThreadLocal
,我知道在创建子项时,ThreadLocal
的默认值与父线程值相同。但是,如果修改父级ThreadLocal
值,我该如何维护它?
有没有办法在父母的ThreadLocal
被修改后,他的所有子线程都会收到修改?
编辑:我的父线程中有一个布尔值设置为false。但我有一个条件,当发生这种情况时,我将布尔值设置为true,我也需要为我的初始线程生成的所有子线程也这样做。
答案 0 :(得分:1)
InheritableThreadLocal
仅帮助设置孩子的初始值。它不提供任何其他同步。您必须使用常规线程同步方法来传播该值。
也就是说,如果你希望所有的孩子在开始时和父母改变时都拥有相同的父母值,那你为什么要给他们所有需要同步的单独对象呢?为什么不给孩子一个父母的参考,并让他们都检查父母的价值?
答案 1 :(得分:-1)
我正在使用可继承的
ThreadLocal
,我知道在创建子项时,ThreadLocal
的默认值与父线程值相同。
如果它是继承的,那就是同一个对象。一切都是一样的。
但是当父级的ThreadLocal值修改时,我怎么能保持这个呢?
保持什么?这里只存在一个ThreadLocal
对象。然而,它的行为就是它的表现。