Java 8 Foreach странное поведение при закрытии потока [дублировать]JAVA

Программисты JAVA общаются здесь
Anonymous
 Java 8 Foreach странное поведение при закрытии потока [дублировать]

Сообщение Anonymous »

Я пытался остановить foreach после того, как определенное условие выполнило закрытие потока, поэтому я сделал следующее

Код: Выделить всё

Stream stream = Stream.of(1, 2, 3, 4, 5);
stream.forEach((e) -> {
System.out.println("inside for Each");
if(e == 3) {
stream.close();
} else {
System.out.println(e);
}
});
< /code>
Я ожидал следующего вывода: < /p>
inside for Each
1
inside for Each
2
inside for Each
< /code>
Но я получил следующий вывод: < /p>
inside for Each
1
inside for Each
2
inside for Each
inside for Each
4
inside for Each
5
Это означает, что Foreach продолжил после закрытия потока ... он даже не выпустил исключение по поводу доступа к элементу после закрытия потока. Есть объяснение для этого вывода?

Подробнее здесь: https://stackoverflow.com/questions/638 ... ing-stream

Вернуться в «JAVA»