可能重复:
如何使线程超时
我正在使用函数调用在树中进行递归搜索。它在类变量中设置最佳答案,并且函数本身不返回任何内容。
所以我想限制该功能的允许时间。如果时间用完了,它就会停止并且线程被销毁。如果我想将通话限制在两秒内,我应该怎么做:
runFunction(search(),2000);
可能重复:
如何使线程超时
我正在使用函数调用在树中进行递归搜索。它在类变量中设置最佳答案,并且函数本身不返回任何内容。
所以我想限制该功能的允许时间。如果时间用完了,它就会停止并且线程被销毁。如果我想将通话限制在两秒内,我应该怎么做:
runFunction(search(),2000);
假设您使用的是 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 来调整线程以返回值。