API Java 8 говорит:
Обход источника конвейера не начинается до тех пор, пока не будет выполнена операция терминала в конвейере.
Итак, почему следующий код выдает:
java.lang.IllegalStateException: поток уже работает или закрыто
Stream<Integer> stream = Stream.of(1,2,3);
stream.filter( x-> x>1 );
stream.filter( x-> x>2 ).forEach(System.out::print);
Первая операция фильтрации в соответствии с API не должна работать в потоке.