0

重複の可能性:
スレッドをタイムアウトにする方法

関数呼び出しを使用して、ツリー内で再帰的な検索を行っています。クラス変数に最良の答えを設定し、関数自体は何も返しません。

そのため、機能の許容時間を制限したいと考えています。時間がなくなると、単に停止し、スレッドが破棄されます。通話を 2 秒に制限したい場合はどうすればよいですか。

runFunction(search(),2000);
4

1 に答える 1

1

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 を送信することで、値を返すようにスレッドを調整することもできます。

于 2012-09-07T15:42:07.217 に答える