IntStream.of(-1, 1)
.parallel()
.flatMap(i->IntStream.range(0,1000).parallel())
.forEach(System.out::println);
result.sequential().forEach(downstream);
在当前的JDK(JDK1.8.0_25)中,答案是否定的,将inner标志设置为parallel并不重要,因为即使设置了它,.flatMap()实现也将流设置为sequential:
result.sequential().forEach(downstream);
(“result”是内部流,它的sequential()方法的doc说:返回一个等价的序列流。可能返回它自己,可能是因为该流已经是序列的,也可能是因为底层流状态被修改为序列的。)
在大多数情况下,不可能努力使内河平行;如果外部流的项目数至少与可以并行运行的线程数相同(ForkJoinPool.CommonPool().GetParallelism()=3
)。
它们之间有什么相同和不同之处,看起来Java并行流中有RXJava中可用的一些元素,是吗?
考虑到我有2个CPU核心的事实,并行版本不是应该更快吗?有人能给我一个提示为什么并行版本比较慢吗?
是否可以为Java8并行流指定自定义线程池?我到处都找不到它。 如果我不能为不同的模块使用不同的线程池,这就意味着我不能在大多数真实世界的情况下安全地使用并行流。 请尝试以下示例。有些CPU密集型任务在单独的线程中执行。这些任务利用并行流。第一个任务被打破,因此每一步需要1秒(通过线程Hibernate模拟)。问题是其他线程会被卡住,等待中断的任务完成。这是一个虚构的示例,但假设一个servlet
根据文档[1],我一直试图在Akka stream中并行化一个流,但由于某些原因,我没有得到预期的结果。 我遵循了留档中列出的步骤,我不认为我错过了什么。然而,我的流的计算都是按顺序一个接一个地发生的。 我错过了什么? [1] https://doc.akka.io/docs/akka/current/stream/stream-parallelism.html 示例输出 我希望看到两个计算同时进
在Java8中运行以下流示例: 产量: 当然,这并不奇怪。由于http://docs.oracle.com/javase/8/docs/api/index.html?overview-summary.html,流是顺序执行还是并行执行并不重要: 顺便说一下:使用(首选的)而不是生成相同的结果,用于顺序和并行执行。 JVM详细信息:
与之间的差异: > 它们可能有不同的特点: 这里讨论的似乎是另一个毫无意义的流拆分器特性策略(并行计算似乎更好):深入理解Java8和Java9中的拆分器特性 在本例中,从禁用拆分功能的顺序流创建了一个拆分器(返回null)。当以后需要转换回一个流时,该流不会从并行处理中受益。一种耻辱。 最大的问题是:作为解决办法,在调用之前总是将流转换为并行流会有什么主要影响?