重複の可能性:
スレッドをタイムアウトにする方法
関数呼び出しを使用して、ツリー内で再帰的な検索を行っています。クラス変数に最良の答えを設定し、関数自体は何も返しません。
そのため、機能の許容時間を制限したいと考えています。時間がなくなると、単に停止し、スレッドが破棄されます。通話を 2 秒に制限したい場合はどうすればよいですか。
runFunction(search(),2000);
重複の可能性:
スレッドをタイムアウトにする方法
関数呼び出しを使用して、ツリー内で再帰的な検索を行っています。クラス変数に最良の答えを設定し、関数自体は何も返しません。
そのため、機能の許容時間を制限したいと考えています。時間がなくなると、単に停止し、スレッドが破棄されます。通話を 2 秒に制限したい場合はどうすればよいですか。
runFunction(search(),2000);
Java 5 以降を使用していると仮定すると、ExecutorService インターフェイスと submit メソッドを使用します。
ExecutorService executor = Executors.newSingleThreadExecutor();
Future<?> future = executor.submit(new Runnable() {
@Override
public void run() {
search();
}
});
try {
future.get(2000, TimeUnit.SECONDS);
} catch (TimeoutException e) {
// handle time expired
}
このメソッドを使用すると、Runnable の代わりに Callable を送信することで、値を返すようにスレッドを調整することもできます。