次のように表現できる、純粋なJavaの「blackBox」を使用して画像を処理しています。
imageOut = imageProcess(imageIn);
これはループしています:
for (int i = 0; i < 1000; i++) {
imageOut[i] = imageProcess(imageIn[i]);
}
ほとんどすべてのプロセスは 2 ~ 5 秒で終了しますが、いくつか (おそらく 2%) は何分間も実行され、一部は終了していないように見えます (理由はわかりません)。これらを(たとえば)30 秒後に終了し、病理画像を記録して、次に進みたいと思います。blackBox には I/O がありませんが、埋め込みThread.isInterrupted()
などの方法もありません。
Thread.stop()
30秒後にプロセスを強制終了するために使用できますか? もしそうなら、どうすればいいですか?[廃止されたことは認識していますが、別の方法が見つかりません。] または、変更せずに問題に取り組むより良い方法はありimageProcess()
ますか?
本質的には、これをフィルターとして実行したいと思います:「処理に 30 秒以上かかるすべての画像を拒否する」。
更新: Peter Lawrey に続いて、私は調査中ProcessBuilder
です。
彼は私が受け入れた Java >=1.8 の簡単な解決策を投稿しました。私は現在Java 1.7を使用しているため、以前のバージョンの単純なケースで機能する独自の回答を投稿しました。