【发布时间】:2016-04-15 17:57:38
【问题描述】:
我想使用 java 并行流并行运行此代码,并将结果更新为两个 ArrayList。下面给出的代码工作正常,除了 ArrayList 的非线程安全可能导致不正确的结果,我不想同步ArrayList。有人可以建议我在我的情况下使用并行流的正确方法吗?
List<Integer> passedList= new ArrayList<>();
List<Integer> failedList= new ArrayList<>();
Integer[] input = {0,1,2,3,4,5,6,7,8,9};
List<Integer> myList = Arrays.asList(input);
myList.parallelStream().forEach(element -> {
if (isSuccess(element)) {//Some SOAP API call.
passedList.add(element);
} else {
failedList.add(element);
}
});
System.out.println(passedList);
System.out.println(failedList);
【问题讨论】:
-
CompletableFuture 在这里可能更合适
标签: java multithreading arraylist parallel-processing java-stream