0

私は作業してInheritableThreadLocalおり、子を作成するときにThreadLocal、親スレッドの値と同じデフォルト値を持つことを知っています。ThreadLocalしかし、親の値が変更されたときにこれを維持するにはどうすればよいでしょうか?

親のThreadLocalスレッドが変更されたときに、すべての子スレッドがその変更を受け取る方法はありますか?

編集: 親スレッドでブール値を false に設定しています。しかし、私には条件があり、それが発生したときにブール値を true に設定し、最初のスレッドによって生成されたすべての子スレッドに対してもこれを行う必要があります。

4

2 に答える 2

1

InheritableThreadLocal子に初期値を設定するのに役立ちます。他の同期は提供しません。値を伝播するには、通常のスレッド同期方法を使用する必要があります。

とはいえ、開始時と親が変更されたときの両方で、すべての子に親の同じ値を持たせたいのであれば、同期が必要なすべての個別のオブジェクトをそれらに与えるのはなぜでしょうか? 子に親への参照を与えて、すべての子に親の値をチェックさせてみませんか?

于 2013-05-07T08:13:43.840 に答える
-1

私は継承可能で作業してThreadLocalおり、子を作成するときThreadLocalに親スレッドの値と同じデフォルト値を持つことを知っています。

継承されている場合は、同じオブジェクトです。すべてが同じです。

しかし、親の ThreadLocal 値が変更されたときにこれを維持するにはどうすればよいですか?

何を維持しますか?ThreadLocalここに存在するオブジェクトは1 つだけです。しかし、それはどのように振る舞うかです。

于 2013-05-07T08:01:45.517 に答える