Limit time on a functioncall
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
How to timeout a thread
我正在使用函数调用在树中进行递归搜索。 它在类变量中设置最佳答案,函数本身不返回任何内容。
所以我想限制该功能的允许时间。 如果时间已经用完,它就会停止并且线程被破坏。 如果我想将呼叫限制为两秒钟,我该怎么办:
1 | runFunction(search(),2000); |
假设您使用的是Java 5或更高版本,我将使用ExecutorService接口和submit方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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来调整线程以返回值。