所以我使用Guava的库Streams.stream(迭代器(方法将迭代器转换为流。然后我对该流调用parallel并执行一些操作。
我想知道的是迭代器到流的转换是在共享线程池线程上完成的还是事先完成的。
Stream<MyItem> myItemStream = Streams.stream(myItemIterator);
myItem.parallel()...
很奇怪,因为如果迭代器转换是在共享线程池线程上完成的,这会给我的用例带来线程安全方面的问题。
谢谢!
对Streams.stream(Iterator)
的调用只是围绕对javaStreamSupport
类的调用的一种方便方法:
public static <T> Stream<T> stream(Iterator<T> iterator) {
return StreamSupport.stream(Spliterators.spliteratorUnknownSize(iterator, 0), false);
}
因此,Stream将使用公共的ForkJoinPool。