如何在java中处理超时方法?
我正在调用一个方法,其中有一个循环,只有当它找到一些结果时才会结束,否则它将继续循环,直到找到为止如何在java中处理超时方法?,java,timeout,timeoutexception,Java,Timeout,Timeoutexception,我正在调用一个方法,其中有一个循环,只有当它找到一些结果时才会结束,否则它将继续循环,直到找到为止 public Collection<Serializable> searchItems(Collection<String> tags) { Collection<Serializable> answers = (Collection<Serializable>) this.issueParallelOperation(ta
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分钟后停止操作,并手动将answers值设置为null。我无法在此.issueParallelOperation方法内进行更改,因为它被许多其他方法调用。任何人都可以向我推荐一些如何用这个searchItems方法解决这个问题的方法吗?你可以记录函数的开始时间,然后在循环时对照开始时间和持续时间检查当前时间。比如:
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;
}
您能否提供issueParallelOperation方法或代码的定义?通常,现代范式是提供一个方法调用来请求终止,而不是终止线程。您可能还应该在单独的线程中调用此调用,以便发出这样的停止请求。需要更改原始方法。啊,我没有发现OP无法更改原始方法。我现在就把答案留给那些可以改变原来方法的人。