目录
Stream
- peek():该方法是个中间操作,是"懒执行"的。peek()方法不会对count()结果产生影响,故以count()作结果操作时,peek()方法的内容不会被执行。
- forEach():这个方法是输出元素的内容,受peek()方法影响,故peek()方法的内容会被输出。
一、主程序
package xyz.jangle.thread.test.n9_6.teststream;
import java.util.Random;
import java.util.concurrent.atomic.AtomicLong;
/**
* 9.6、监测流
*
* @author jangle
* @email jangle@jangle.xyz
* @time 2020年10月25日 上午11:43:25
*
*/
public class M {
public static void main(String[] args) {
var counter = new AtomicLong(0);
var random = new Random();
// 此处的peek不会执行。因为count的结果不受peek影响。(peek是懒执行的)
var streamCounter = random.doubles(1000).parallel()
.peek(n -> System.out.println(counter.incrementAndGet() + "-" + n)).count();
System.out.println("Counter:" + counter.get());
System.out.println("Stream Counter:" + streamCounter);
counter.set(0);
random.doubles(1000).parallel().peek(n -> System.out.println("Peek: " + counter.incrementAndGet() + "-" + n))
.forEach(n -> System.out.println("ForEach: " + n));
System.out.println("Counter: " + counter.get());
}
}