問題: ThreadのrunメソッドでRunTimeExceptionがスローされたときに、そのスレッドのスレッドローカルが保持されることを知りたかったですか?この質問への答えは、私が以下で求めていることにあります。つまり、スレッドが死んだ場合(例外がスローされた場合)、スレッドのローカルスナップショットgetはクリアされます。プログラムでそれを処理する必要はありますか? シナリオ: 負荷が高いときに要求が送信され、処理に時間がかかり、応答が作成される前に非同期コンテキストがタイムアウトしました。このシナリオではどうなりますか?要求を処理しているスレッドはどうなりますか?ThreadPoolExecutorでスレッドが終了するタイミング
詳細はこちら 私はThreadPoolExecutorsが内部的にどのように機能するかを研究しています。私が知りたいことは、スレッドのrunメソッドでRunTimeExceptionがスローされたときに起こることです。それは殺され、ThreadPoolExecutorはまったく新しいスレッドを作成しますか?または、JVMは何とかそのスレッドが死ぬことを許さないので、プール内で に再利用できるようになります。私はスレッドが死ぬと思うので、それはThreadLocalスナップショットです。 ThreadPoolExecutorが例外を処理する方法と、特定のスレッドのライフサイクルがその周りをどのように回転するかについて、いくつかの洞察を得たいと思っていました。 ご協力いただきありがとうございます!
は、なぜあなたは、このような実装の詳細を気にしていますか?インターフェイスではなく、実装について心配しています。あなたが本当に気にしているのであれば、自分でコードを掘り下げてください。 StackOverflowは、あなたが抱えている問題について質問するためのものです。 JDK内のすべてのモジュールの実装を中断するのは、問題によるものではなく、奇妙なものです。これは予期せぬ結果や説明できない結果につながる問題に助けを求めるサイトです*。 –
* "ThreadPoolExecutorsが内部的にどのように動作するかを研究しています。" * - 私はあなたがJDKに同梱されているソースコードを読んだことを前提としています。ソースのどの部分に問題がありましたか? – the8472
これはrunWorkerメソッドのソースコードにあります。 –