【发布时间】:2016-01-06 17:37:07
【问题描述】:
我想知道如何设计可以同时运行或单线程运行的方法。例如我有一个这样的方法:
/**
* Produces the norm of the two vector {@code v1}.
*
* @param v1
* The first vector.
*
* @param v2
* The second vector
*
* @throws MathException
* Of type {@code DIMENSION_MISMATCH} if
* {@code v1.getDimension()} is != {@code v2.getDimension()}.
*/
public static Function<Vector, Double> norm = (v) -> {
return Math.sqrt(
IntStream.range(0, v.getDimension()).mapToDouble(i -> Math.pow(v.getEntry(i), 2)).sum());
};
如果我想让嵌入式流并行,那么我可以再次创建相同的方法并将parallel() 添加到流中,但这会增加很多样板。有parallel(boolean)开关可以用吗?
【问题讨论】:
-
这仍然是在征求讨论和建议,最好这个词只是强调,取出它并不会改变仍然基于意见的基本问题,同时太宽泛。现在去掉best这个词只是混淆了这些问题。
-
@JarrodRoberson 出于好奇,您能想到多少种不同的实现方式?
-
当然,在编程中通常有不同的方法来解决问题。这并不一定会使问题意见基于或过于广泛......
-
@JarrodRoberson 不一定。当有 2 个相同的解决方案只是以不同的方式编写时,意见就会发挥作用。如果不是,则有非自以为是的方式来比较它们的性能。你会诚实地在这里写一个 Spring 解决方案吗?因为您可以为每个可能的问题编写一个 Spring 解决方案。不,对于你是否想要这个没有意见:OP想要它。
-
(如果您考虑使用
parallel()来提高性能,您可能会发现unordered()也可以提高性能。)
标签: java multithreading parallel-processing java-8 java-stream