0

可能重复:
如何使线程超时

我正在使用函数调用在树中进行递归搜索。它在类变量中设置最佳答案,并且函数本身不返回任何内容。

所以我想限制该功能的允许时间。如果时间用完了,它就会停止并且线程被销毁。如果我想将通话限制在两秒内,我应该怎么做:

runFunction(search(),2000);
4

1 回答 1

1

假设您使用的是 Java 5 或更高版本,我将使用 ExecutorService 接口和提交方法:

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
}

使用此方法,您还可以通过提交 Callable 而不是 Runnable 来调整线程以返回值。

于 2012-09-07T15:42:07.217 回答