限制函数调用的时间[重复]

Posted

技术标签:

【中文标题】限制函数调用的时间[重复]【英文标题】:Limit time on a functioncall [duplicate] 【发布时间】:2012-09-01 12:07:43 【问题描述】:

可能重复:How to timeout a thread

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

所以我想限制函数的允许时间。如果时间用完了,它就会停止并且线程被销毁。如果我想将通话限制在两秒内怎么办:

runFunction(search(),2000);

【问题讨论】:

看这个问题:***.com/questions/2275443/how-to-timeout-a-thread 【参考方案1】:

假设您使用的是 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 是可中断的情况下才有效。 完美!我需要销毁线程还是自动完成?

以上是关于限制函数调用的时间[重复]的主要内容,如果未能解决你的问题,请参考以下文章

函数递归

限制 JavaScript 函数调用,但需要排队(不要丢弃调用)

从被调用函数中获取调用函数名[重复]

限制来自 Blob 存储中静态网站的 Azure 函数调用?

在给定的时间预算后停止函数调用[重复]

高阶函数 - 函数节流