Future.get()方法导致空指针异常

时间:2018-11-17 15:45:35

标签: java rest spring-boot

我有rest调用,它将根据开始和结束参数返回值。 例如:如果总记录为1000,那么将有10个剩余调用,每个调用将返回100条记录。

我已经看过此链接,但是没有运气:(

Future.get() nullpointer

为此,我是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个对象,但这需要花费很长时间。因此,减少使用我的逻辑的时间。

如何解决此错误?在此先感谢!

0 个答案:

没有答案