【发布时间】:2015-08-24 07:45:41
【问题描述】:
我有一个 Futures 列表,我希望在执行下一步之前完成所有任务。目前我正在这样做:
public static int[] benchmark(){
List<Future<Integer>> futureNumbers = service.invokeAll(callableList);
int[] numbers = new int[events.size()];
int i = 0;
for (Future<Integer> future : futureNumbers) {
numbers[i] = future.get();
}
return numbers;
}
但是只有我返回的数组的第一个值是正确的,其他都是 0。我怎样才能实现 numbers 在每个任务完成后才返回?
您的帮助将不胜感激。
【问题讨论】:
-
只是一个列表。不重要。
-
为什么不重要?如果它的大小与
futureNumbers不同,则非常相关。 -
大小是对的,但是除了第一个之外的所有值都是0。所以其他索引都是“空”的,没有用未来的值填充。
-
我没有看到 i++,你总是写到 [0] 位置...
-
呃……漫长的一天。谢谢。那是不必要的。
标签: java multithreading