限制功能调用的时间

时间:2012-09-07 15:18:45

标签: java multithreading time depth-first-search

  

可能重复:
  How to timeout a thread

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

所以我想限制该功能的允许时间。如果时间已经用完,它就会停止并且线程被破坏。如果我想将呼叫限制为两秒钟,我该怎么办:

runFunction(search(),2000);

1 个答案:

答案 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来调整线程以返回值。