我正在尝试使用执行程序服务进行并行请求。完成后,我将使用Java 7中的以下代码访问Future。我所要做的就是将其存储在名为infos
的新列表中。我看到ConcurrentModificationException
异常。关于如何摆脱它的任何建议?
List<Info> infos = new ArrayList<>();
for(Future<Info> fut : list){
try {
infos.add(fut.get()); // ConcurrentModificationException happening here...
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
}
// send infos
更新-
private List<Future<Info>> list;
Future<Info> future = executor.submit(callable);
list.add(future);
答案 0 :(得分:1)
您的列表的类型为Future<Infos>
,而在增强的for循环中,您正在使用信息。
for(Future<Info> fut : list)
您的代码应为:
private List<Future<Info>> list = new ArrayList<>();
Future<Info> future = executor.submit(callable);
list.add(future);