并行化java中的循环

时间:2013-07-04 06:25:22

标签: java multithreading openmp

我遇到过openMP,它可以用来并行化c,C ++中的for循环。当然,OpenMP可以做的远不止这些。但我很好奇我们是否可以在java中并行化for循环以优化程序的性能。假设我在for循环中有n次迭代,有没有办法并行运行这些迭代?

1 个答案:

答案 0 :(得分:5)

如果每次迭代都需要花费大量时间并且与循环中的先前计算无关,那么使用ExecutorService并将计算提交为任务。

ExecutorService executorService = Executors.newFixedThreadPool(4); // number of threads
for (int i = 0; i < n; i++) {
   // declare variables as final which will be used in method run below
   final int count = i;
   executorService.submit(new Runnable() {
       @Override
       public void run() {
           //do your long stuff and can use count variable
       }
   });
}