春に新しいスレッドを作成するときにどのようにコンテキストを維持するには?

Gevorg Harutyunyan:
System.out.println(LocaleContextHolder.getLocale()); // zh
new Thread(() -> {
    System.out.println(LocaleContextHolder.getLocale()); // en_US
}).start();

親スレッドからは、私はコンテキストのロケールは、子スレッドからの「ZH」であることがわかり、私は「en_USの」を参照してください。新しいスレッドは、コンテキストのロケールを失っています。新しい作成したスレッドにコンテキストを渡す方法はありますか?

タルングプタ:

よるとのJavadoc

LocaleContextは継承フラグがtrueに設定されている場合、現在のスレッドによって生成されたすべての子スレッドによって継承されます。

この手段ロケールは、メソッドを使用して設定することができますsetLocale(Locale locale, boolean inheritable)渡すことでinheritable、真のよう。だから、新しい子スレッドを生成する前にあなたがあるsetLocaleを呼び出すことができるinheritableと等しくなりますtrue

おすすめ

転載: http://10.200.1.11:23101/article/api/json?id=478812&siteId=1