- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我发现我对并行流提供的一致性保证略有挣扎:
1. myList.parallelStream().map(mymapper).forEach(myFn)
2. // Is myFn guaranteed to be called for each element in myList here ?
换句话说,我能否确定将执行 myFn 的所有 forkJoinTask 在第 2 行完成?
最佳答案
是的。完整流管道中的并行任务是同步执行的。只有在所有任务完成后才会执行第 2 行。
package documentation for java.util.stream州,
In almost all cases, terminal operations are eager, completing their traversal of the data source and processing of the pipeline before returning.
但是请注意,forEach
任务完成的任何副作用对其他线程可能不是可见的。实际上,forEach
只能通过让其操作执行副作用来运行。如 Stream.forEach
javadoc 中所述,该操作必须使用适当的同步或其他构造,以确保线程安全操作和适当的副作用可见性。
关于java - parallelStream 终止定义明确吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25843346/
这个问题已经有答案了: How do I write a correct micro-benchmark in Java? (11 个回答) 已关闭 5 年前。 我正在对 Java 聚合操作进行一些性
我发现我对并行流提供的一致性保证略有挣扎: 1. myList.parallelStream().map(mymapper).forEach(myFn) 2. // Is myFn guarantee
我有一个方法可以并行计算列表中数字的平方并将它们相加: public static double sumSquared(List values) { return values
这个问题已经有答案了: How do Java 8 parallel streams behave on a thrown exception? (1 个回答) 已关闭 4 年前。 我正在研究java
通常当使用 Java 8 的 parallelStream() 时,结果是通过默认的、通用的 fork-join 池(即 ForkJoinPool.commonPool())执行。 这显然是不可取的,
Java 8 parallelStream 似乎使用了比系统属性 java.util.concurrent.ForkJoinPool.common.parallelism 指定的线程更多的线程。这些单
我有以下代码,有时它的行为不确定。例如,我在那里传递了 3 个事件,而输出只有两个!你能解释一下这种行为的原因吗? public List getEventResponse(final List ev
Java8并行流(parallelStream)注意点 在最初使用并行流的时候,查询列表会偶尔性报空指针异常,这令我非常纳闷 代码是这样的: ?
使用示例可能更容易解释我想要做的事情。假设我必须遵循两个数组: int firstArray[] = {1, 2, 3, 4, 5}; int secArray[] = {1, 2, 3, 4, 5}
我正在尝试使用 chronicleMap.parallelStream: myChronicleMap.entrySet().parallelStream().forEach((entry) -> {
我正在使用parallelStream并行上传一些文件,有些是大文件,有些是小文件。我注意到并非所有 worker 都被使用。 一开始一切都运行良好,所有线程都被使用(我将并行度选项设置为 16)。然
这个问题在这里已经有了答案: How can I turn a List of Lists into a List in Java 8? (12 个答案) 关闭 8 年前。 我想将并行流中的列表结果
我有以下代码 public void addNames(){ List names = new ArrayList names.parallelStream().foreach(name-
如果输入大小太小,库 automatically serializes the execution of the maps in the stream ,但这种自动化没有也不能考虑 map 操作的繁重
我创建了一个并行度为 25 的自定义 ForkJoinPool。 customForkJoinPool = new ForkJoinPool(25); 我有一个包含 700 个文件名的列表,我使用这样
我在 Internet 上看到了很多示例,为了使用流 API 来执行并行操作,只需像这样调用 .parallelStream() 方法: mySet .parallelStream()
考虑这个(完全人为的)Java 代码: final List s = Arrays.asList(1, 2, 3); final int[] a = new int[1]; a[0] = 100; s
谁能告诉我为什么会这样,这是预期的行为还是错误 List a = Arrays.asList(1,1,3,3); a.parallelStream().filter(Objects::nonNull)
方法一 通常,非常快,并且效果很好。 public static int loops = 500; private static ExecutorService customPool = Execut
默认情况下,parallelStream 内的 commonPool 大小应为 cpu_cores - 1。 但是,在我的应用程序中,它始终大于硬件 cpu_cores。 VisualVM 截图: 很
我是一名优秀的程序员,十分优秀!