gpt4 book ai didi

java - 函数超时

转载 作者:行者123 更新时间:2023-11-29 03:21:42 25 4
gpt4 key购买 nike

我怎样才能在 java 中实现这样的事情?或者更准确地说,我想为我的功能设置超时。

伪代码:

public String aLotOfWork()
{
return hardWork();

if(hardWork() is still executing after 30 seconds)
return "TimeOut";


}

我可以为此使用 TimerTask,但我无法将定时器任务 run() 的任何值返回到我的上层函数

TimerTask task = new TimerTask() {
public void run()
{
return ""; // timerTask run must be void.
}
};
Timer timer = new Timer();
timer.schedule(task, 50000, 1);

最佳答案

检查 FutureTask类(class)。它提供了一个名为 get(timeout, timeUnit) 的方法。将 hardwork 任务卸载到 FutureTask

public String aLotOfWork() {

FutureTask task = new FutureTask<String>(new Callable<String>() {

public String call() {
return hardwork();
}
});

try {
return task.get(30, TimeUnit.SECONDS);
} catch(TimeoutException e) {
return "Timeout";
}
catch(Exception e) {
return "Timeout"; // or whatever you like
}

}

关于java - 函数超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23211094/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com