我有rest调用,它将根据开始和结束参数返回值。 例如:如果总记录为1000,那么将有10个剩余调用,每个调用将返回100条记录。
我已经看过此链接,但是没有运气:(
为此,我是restcalls的calleble接口:
ExecutorService executor = Executors.newFixedThreadPool(iterationCount);
List<Callable<Response>> callables = new ArrayList<Callable<Response>>();
MyTask e = new MyTask(//necessary params);
callables.add(e);
try {
List<Future<Response>> futures = executor.invokeAll(callables);
for (Future<Response> future : futures) {
if(!future.isDone()) continue;
if (future.get().getAccessoryModelSpecs() !=null) {
returnValue.addAll(future.get().getObjects());
}
}
} catch (InterruptedException | NullPointerException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ExecutionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
我的可打电话班
public class MyTask implements Callable<Response>{
public GetAccessoryTask(params) {
}
@Override
public Response call() throws Exception {
return connectSvc.getRessponse(params);
}
}
所以在这里,我得到10个可调用对象和10个将来的对象。即使我检查了可调用对象也不为空。 但是
future.get()
调用会导致Nullpointer异常。
如果我一次又一次地调用10次服务方法,则会得到正确的结果,每次的正确结果是100个对象,但这需要花费很长时间。因此,减少使用我的逻辑的时间。
如何解决此错误?在此先感谢!