Is ConcurrentModificationException in stream.forEach lazy?

Viewed 29

Why

List list = new ArrayList();
    list.add("1");
    list.add("2");
    list.add("3");
    list.stream().forEach(
            s->{
                System.out.println(s);
                list.add(s+"add");
            }
    );

Throws ConcurrentModificationException only after all output:

1
2
3

java.util.ConcurrentModificationException
    at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1661)

? It seems it should be done after 1, isn't it?

0 Answers
Related