【发布时间】:2012-09-01 12:07:43
【问题描述】:
我正在使用函数调用在树中进行递归搜索。它在类变量中设置最佳答案,并且函数本身不返回任何内容。
所以我想限制函数的允许时间。如果时间用完了,它就会停止并且线程被销毁。如果我想将通话限制在两秒内怎么办:
runFunction(search(),2000);
【问题讨论】:
标签: java multithreading time depth-first-search
我正在使用函数调用在树中进行递归搜索。它在类变量中设置最佳答案,并且函数本身不返回任何内容。
所以我想限制函数的允许时间。如果时间用完了,它就会停止并且线程被销毁。如果我想将通话限制在两秒内怎么办:
runFunction(search(),2000);
【问题讨论】:
标签: java multithreading time depth-first-search
假设您使用的是 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 来调整线程以返回值。
【讨论】:
search 是可中断的情况下才有效。