0

我正在调用一个方法,其中存在循环,只有在找到一些结果时才会结束,否则它会继续循环直到找到

public Collection<Serializable> searchItems(Collection<String> tags) {
    Collection<Serializable> answers = (Collection<Serializable>) 
        this.issueParallelOperation(tags, RemoteOperation.getIndex, 
        null, null, null, null, AggregationStrategy.joinCollection);
}

this.issueParallelOperation() 方法中的代码不断循环,直到找到结果。我想在 1 分钟后停止操作并手动设置答案值,如 null。我无法在 this.issueParallelOperation() 方法中进行更改,因为它被许多其他方法调用。谁能建议我一些想法如何在这个searchItems()方法中解决这个问题

4

1 回答 1

0

您可以记录函数的开始时间,然后在循环时检查当前时间与开始时间和持续时间。就像是:

public Object functionWithTimeout(long duration){
   long start = System.currentTimeMillis();

   while(someCriteria){
      if(System.currentTimeMillis() - start > duration){
         //the function has timed out
         break;
      }

      //whatever code you want to repeat until the timeout
   }

   return null;
}
于 2014-02-25T13:39:30.293 回答