2

私は最近、Lukaszがここで説明しているのと同じ問題を抱えていることに気づきました。この質問への回答は役に立ち、最終的には私の問題を解決するのに役立ちましたが、なぜThreadPoolTaskExecutor適切に処理されないのか誰かが知っていることを望んでいましたMODE_INHERITABLETHREADLOCALか?この問題は特定されていThreadPoolTaskExecutorますか?

ありがとう!ライアン

4

1 に答える 1

3

さて、春のソースフォーラムのこの投稿によると、子スレッドの値は、スレッドが作成されたときにのみ親スレッドから設定されます。再利用するスレッドのプールがある場合、値を変更しない限り、値は再度設定されません。

投稿から引用します

作成中のスレッドのコンテキストの代わりに、呼び出し元のスレッド(エグゼキューターを呼び出す)のコンテキストを使用したいようです。これは、継承されたスレッドローカルを使用することと同じではないため、これを行う方法ではありません。コンテキストを自分で明示的に設定するか、エグゼキュータの実装をカスタマイズして設定することをお勧めします。

于 2012-11-20T16:31:17.097 に答える