现在我已经掌握了并行检索对象的方法,如何将这些对象添加到列表中?
我有一个Future<Site>
个对象列表,我尝试将其添加到ArrayList
个Site
个对象中。这是我的for循环。我可以在循环中添加一个print语句,它显示确实填充了Future<Site>
个对象的列表,但是添加到现有列表(最后一行)不起作用。
List<Future<Site>> futures=threadmaker.invokeAll(active_sites.stream().map(site -> new TAG_SCANNER(site, loggr)).collect(Collectors.toList()));
//Now fetch all the results
for (Future<Site> result : futures) {
//SOUND THE ALARMS (adding to existing list)
alarm_sites.add(result.get());
}
编辑:
我认为Future的get方法是阻塞的,因为代码在返回结果之前不会进展。我的错误在于尝试添加到现有列表中吗?
答案 0 :(得分:-1)
出于某种原因,在我的invokeall命令之后创建列表解决了我的问题。我不确定为什么预先存在的列表不起作用,但我现在已将问题标记为已解决,稍后我将对此进行调查以了解可能发生的情况。