强制方法在指定的时间间隔内运行

Mar*_*tin 5 java

我想强制方法运行指定的时间.

 public Response run(Request req){
    //method runImpl must run during specified interval of time(for example for 10 secs)
    Response res = runImpl(req);
    return response;
    }
Run Code Online (Sandbox Code Playgroud)

这样做的最佳方式是什么?谢谢!

Sea*_*ean 2

runImpl 应该返回一个布尔值以使该代码正常工作。如果您不希望程序在完成之前停滞不前,您可能会希望在新线程中执行此操作(基本教程比比皆是)。

public Response run(Request req){
long lasttime=Sys.getTime();
int i=0;
while(i<10){
   if(Response res = runImpl(req);){
   return response;
   }
   if((Sys.getTime-lasttime)>1000){
   i++;
   lasttime=Sys.getTime();
   }
}
return null;
Run Code Online (Sandbox Code Playgroud)

这会在每个处理器时刻运行,如果您希望它按一定间隔运行以及运行 10 秒,请使用:

public Response run(Request req){
long lasttime=Sys.getTime();
int i=0;
for(int i; i<(10000/yourchoiceinterval); i++){
   if(Response res = runImpl(req);){
   return response;
   }
   if((Sys.getTime-lasttime)>1000){
   lasttime=Sys.getTime();
   }
}
return null;
Run Code Online (Sandbox Code Playgroud)