例如,如果类Foo
具有实例方法bar()
,
List<Foo> list = new ArrayList<>();
// ...
list.stream()
.parallel()
.forEach(Foo::bar);
doSomething();
是否保证在调用bar()
之前所有对doSomething()
的调用都已返回?
答案 0 :(得分:5)
是的,除了终端操作是iterator()
或spliterator()
。
来自java.util.stream package page:
在几乎所有情况下,终端操作都很渴望,在返回之前完成数据源的遍历和管道的处理。只有终端操作iterator()和spliterator()不是;这些是作为“逃生舱口”提供的,以便在现有操作不足以执行任务时启用任意客户端控制的管道遍历。