【发布时间】:2014-07-24 13:46:35
【问题描述】:
下面是两个sn-p代码,一个是顺序的,一个是并行的:
public<T> void sequentialRecursive(List<Node<T>> nodes, Collection<T> results)
{
for(Node<T> n: nodes) {
results.add(n.compute());
sequentialRecursive(n.getChildren(), results);
}
}
public<T> void parallelRecursive(final Executor exec, List<Node<T>> nodes, final Collection<T> results) {
for(final Node<T> n : nodes){
exec.execute(new Runnable(){
public void run()
{
results.add(n.compute());
}
});
parallelRecursive(exec, n.getChildren(), results);
}
}
我想知道以上两个函数是否产生相同的结果?以下结果可能吗?
SequentialRecursive 的结果是:[1,2,3,4,5],ParallelRecursive 的结果是:[1,3,2,5,4]。
【问题讨论】:
-
你试过实际运行它吗? :)
-
当你尝试执行这两种方法时的输出是什么?
-
抱歉没试过,是书上的例子。我对此感到困惑。
-
我能说的是——第二个非常效率低下。
-
如果不带来效率,那么并行又有什么意义呢?
标签: java concurrency