0

可能な数のスレッドを持つアプリケーションがあります。基本的に、スレッドはこれで動作するはずです:

  • メインスレッド
  • 計算スレッド
  • 計算スレッド
  • 計算スレッド

これらのスレッドを FixedThreadPool に追加/実行することは問題ではありません。スレッド自体は、メインスレッドで特定の関数を呼び出して結果を送信します。このステップの後、スレッドは、次の計算のために再度呼び出されるまでスリープする必要があります。

Mainthread は、CalculationThread への参照を保持して更新をスレッドに送信し、それをプールに readd して次の計算を開始します。

私の問題: 特定のスレッドにタイムアウトを強制するにはどうすればよいですか? 無限ループが発生した場合、このタイムアウトの強制も機能する必要があります

4

1 に答える 1

1

少なくとも正気の方法ではなく、スレッドからの協力なしにタイムアウトを強制することはできません。計算タスクは、Java の割り込みメカニズムに準拠するようにコーディングする必要があります。基本的に、これは時々Thread.interrupted戻り値をチェックし、 で中止することを意味しtrueます。

他の唯一のオプションは ham-handed (非推奨) ですThread.stop。これは、特にプール管理スレッドで行うと、一般的な混乱を引き起こす可能性があります。

于 2012-11-12T13:46:07.233 に答える