ポーリングによってRabbitMQキューをリッスンしようとしています。しかし、何らかの理由でネットワークに問題が発生した場合、キューへの接続が失われると、スレッドは自動的に切断され、接続がすべて閉じられます。しかし、これはバックグラウンドタスクであり、キューが本当に大きくなり、通知を送信するまではわかりません。リスナースレッドが死んだときに、サーバーを再起動せずにサーバーへの接続が失われる方法
スレッドの正常なシャットダウンを手伝ってもらえますか(私はすでにcatch節で例外を注意深く扱っていると思います)。しかし、私は停止したスレッドを再起動する方法を知らない。
停止したスレッドの新しいインスタンスを再開できる方法はありますか。
PS:@postconstructを使用してスレッドをインスタンス化し、コンテナがすべてのBeanをロードした直後にinitスレッドを呼び出します。
ありがとうございました。グレー。私は今問題を解決することができました。私は、スレッドが例外を取得すると直ちにブロックをキャッチし、スレッドがJVMによって要求されるという印象を受けました。あなたの答えごとに明らかにそうでないケース。 –
私があなたの答えから理解しているのは、たとえ例外が発生してもスレッドが生きている(例外が適切に処理されていれば)、接続を取得しようとし続けます。 .....私の理解が間違いなく正しいことを確認してください。 –
はい、まさに@Anupamです。例外処理は、何かが殺されたことを意味するものではありません。 'run()'メソッドの終わりに達したときだけ、スレッドは消え去ります。決してサイレントではありません。また、メインスレッドは同じ方法であることに注意してください。 – Gray