17-案例实现
案例实现
按照如下步骤来实现本案例。
1.创建 Main
类和 main()
方法,并在类中定义两个属性,它们分别是 AtomicInteger
类型的 counter
和 Random
类型的 random
:
public class Main {
public static void main(String[] args) {
AtomicLong counter = new AtomicLong(0);
Random random=new Random();
2.创建一个包含1000个双精度型的随机数流,不过所创建的流是一个线性流,因此需要用 parallel()
方法把流并行化,再然后通过 peek()
方法递增 counter
上的值并输出相关信息到控制台中。之后,通过 count()
方法计算数组中的元素数量并把统计结果用整型变量 counter
来存储,在控制台中分别输出由 count()
方法返回的值和 counter
变量中存储的值:
long streamCounter = random.doubles(1000).parallel()
.peek( number -> {
long actual=counter.incrementAndGet();
System.out.printf("%d - %f\n", actual, number);
}).count();
System.out.printf("Counter: %d\n", counter.get());
System.out.printf("Stream Counter: %d\n", streamCounter);
3.现在,把变量 counter
设置为0,另外创建1000个随机浮点数,通过 parallel()
方法把这些数字转成并行流,并通过 peek()
方法增加 counter
变量的值,在控制台中输出其他相关信息。最后,用 forEach()
方法在控制台中输出所有的数和 counter
变量中的值:
counter.set(0);
random.doubles(1000).parallel().peek(number -> {
long actual=counter.incrementAndGet();
System.out.printf("Peek: %d - %f\n", actual,number);
}).forEach( number -> {
System.out.printf("For Each: %f\n", number);
});
System.out.printf("Counter: %d\n", counter.get());
}
}