Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 函数超时_Java - Fatal编程技术网

Java 函数超时

Java 函数超时,java,Java,如何在java中实现这一点?或者,更重要的是,我想让我的函数超时 伪代码: public String aLotOfWork() { return hardWork(); if(hardWork() is still executing after 30 seconds) return "TimeOut"; } 我可以使用TimerTask进行此操作,但我不能将timer task run()中的任何值返回给我的上级函数 TimerTask tas

如何在java中实现这一点?或者,更重要的是,我想让我的函数超时

伪代码:

public String aLotOfWork()
{
    return hardWork(); 

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


}
我可以使用TimerTask进行此操作,但我不能将timer task run()中的任何值返回给我的上级函数

TimerTask task = new TimerTask() {
    public void run() 
    {
        return ""; // timerTask run must be void.
    }
};
Timer timer = new Timer();
timer.schedule(task, 50000, 1);
结帐下课。它提供了一个名为
get(timeout,timeUnit)
的方法。将
努力工作
任务卸载到
未来任务

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
  }

}
公共字符串aLotOfWork(){
FutureTask task=新的FutureTask(新的可调用(){
公共字符串调用(){
回报努力();
}
});
试一试{
返回任务。获取(30,时间单位。秒);
}捕获(超时异常e){
返回“超时”;
}
捕获(例外e){
返回“Timeout”;//或您喜欢的任何内容
}
}
结帐上课。它提供了一个名为
get(timeout,timeUnit)
的方法。将
努力工作
任务卸载到
未来任务

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
  }

}
公共字符串aLotOfWork(){
FutureTask task=新的FutureTask(新的可调用(){
公共字符串调用(){
回报努力();
}
});
试一试{
返回任务。获取(30,时间单位。秒);
}捕获(超时异常e){
返回“超时”;
}
捕获(例外e){
返回“Timeout”;//或您喜欢的任何内容
}
}

这将给CPU带来沉重的负载。这将给CPU带来沉重的负载。