これが私がやりたいことです。与えられた関数
public void foo() {
}
一定時間経過したら終了させたいです。つまり、これがある種の乱数発生器であり、いくつかの困難な制約を満たすランダム オブジェクトを生成する必要があると想像してください。つまり、関数は実際には次のようなものかもしれません
public void foo() {
//task1
while(fails) {
//...
}
//task2
while(fails2) {
//...
}
//more tasks may follow, which use the data from the previous tasks to further try to satisfy difficult conditions
}
それはほんの一例です。しかし重要なのは、関数が多くの while ループ、多くのテスト ケース、および大量の計算で構成されていることです。
目標:「foo() を実行し、4 秒経過しても foo() がまだ完了していない場合は、すぐに foo() を停止する」と言えるようにしたいと考えています。
私が試したこと: foo() のほぼすべての行に条件を含めて、経過時間を確認し、4 秒が経過した場合に関数から戻るようにしました。しかし、 foo() がいかに複雑であるかを考えると、関数のすべての行で時間をテストする必要があるため、これをコード的に行うのは明らかに非常に困難です。
私の思考ロジック: System.exit(1) のように、状態に関係なくコードを終了する、この種のことを行う関数があるため、これは可能であると思います。それがアイデアです。この関数 foo() を終了させるために、外部から呼び出すことができるようにしたいと思います。