当前位置:嗨网首页>书籍在线阅读

17-案例实现

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

案例实现

按照如下步骤来实现本案例。

1.创建 Main 类和 main() 方法,并在类中定义两个属性,它们分别是 AtomicInteger 类型的 counterRandom 类型的 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());
  }
}