在并行流中,累加器不正常工作的问题通常是由于多个线程并发操作共享的可变累加器导致的。解决这个问题的一种常见方法是使用AtomicInteger
或AtomicLong
类作为累加器,这些类提供了原子操作,可以确保线程安全。下面是一个示例代码:
import java.util.Arrays;
import java.util.concurrent.atomic.AtomicInteger;
public class ParallelStreamExample {
public static void main(String[] args) {
int[] numbers = {1, 2, 3, 4, 5};
AtomicInteger sum = new AtomicInteger(0);
Arrays.stream(numbers)
.parallel()
.forEach(num -> sum.addAndGet(num));
System.out.println("Sum: " + sum);
}
}
在上面的代码中,我们使用了AtomicInteger
类作为累加器。在并行流的forEach
操作中,我们使用addAndGet
方法将每个元素累加到sum
中,这个方法是原子操作,可以确保多个线程并发操作时的正确性。
通过使用原子类,我们可以确保在并行流中累加器的正确工作。
下一篇:并行路由-页面刷新