可能重复:
How to timeout a thread
我正在使用函数调用在树中进行递归搜索。它在类变量中设置了最佳答案,函数本身不返回任何内容。
所以我想限制该功能的允许时间。如果时间已经用完,它就会停止并且线程被破坏。如果我想将呼叫限制为两秒钟,我该怎么办:
runFunction(search(),2000);
答案 0 :(得分: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
}
使用此方法,您还可以通过提交Callable而不是Runnable来调整线程以返回值。