Java中算法的并行执行

Java中算法的并行执行,java,multithreading,algorithm,Java,Multithreading,Algorithm,我想在Java中运行与X无关的计算。基本上,我应该在不同的数据集上运行一些算法。所以,为了节省时间,我想并行运行它。 我的笔记本电脑有2核2.30MHz处理器和8GB内存。我是否正确理解最好的选择是创建2个线程,因为我只有2个内核?我是否需要使用一些特定的库来排除像Hadoop这样更复杂的方法?例如。 或者简单的线程就足够了 更新: 我是否正确理解最好的选择是创建2个线程,因为我只有2个内核 可能吧。如果你有超线程,你可能有4个逻辑CPU。最佳数字可能会更高,具体取决于您正在做什么 我是否需要使

我想在Java中运行与X无关的计算。基本上,我应该在不同的数据集上运行一些算法。所以,为了节省时间,我想并行运行它。 我的笔记本电脑有2核2.30MHz处理器和8GB内存。我是否正确理解最好的选择是创建2个线程,因为我只有2个内核?我是否需要使用一些特定的库来排除像Hadoop这样更复杂的方法?例如。 或者简单的线程就足够了

更新:

我是否正确理解最好的选择是创建2个线程,因为我只有2个内核

可能吧。如果你有超线程,你可能有4个逻辑CPU。最佳数字可能会更高,具体取决于您正在做什么

我是否需要使用一些特定的库来排除像Hadoop这样更复杂的方法

同样,这要视情况而定,但JDK中已经有4个不同的库。我想先试试那种。e、 g.尝试Stream的parallelStream

例如ParJava。或者简单的线程就足够了

我会尝试使用一个更高级的库,让你的生活更轻松

对于上面的例子,你会做

List<Integer> solutions = IntStream.range(0, NumIterations)
        .parallel()
        .map( i -> runAlgorithm(i))
        .collect(Collectors.toList());

这使用了一个优化的线程池来分割工作并收集结果。

parallelStream是否适用于Java 7?@klausklausos您需要Java 8。Java 7不再公开支持请参阅我的更新。你是说像这样的事吗?在这种情况下,我应该在哪里定义并行进程的数量?@klausklausos我添加了一个示例。流的库试图优化要使用的线程数。
List<Integer> solutions = IntStream.range(0, NumIterations)
        .parallel()
        .map( i -> runAlgorithm(i))
        .collect(Collectors.toList());