如何在Groovy中同时运行循环?

时间:2011-08-09 12:13:07

标签: multithreading concurrency groovy

到目前为止,我在groovy中有如下代码

    HashMap map = new HashMap()
    for(char i='a'; i<='z'; i++) {
      def name = getName(i)
      def info getInfo(i)
      map.put(name, info)
    }
    serializeMap(map)

在Groovy中同时运行此循环的最佳方法是什么?

2 个答案:

答案 0 :(得分:10)

有一个名为GPars的Groovy扩展。它支持几种并发技术,如Fork / Join或Actor模型。使用GPars,您的代码可能看起来像这样(我无法弄清楚您正在迭代的内容):

import groovyx.gpars.GParsPool

Map map = [:] as ConcurrentMap

GParsPool.withPool {
  chars.eachParallel { i ->
    def name = getName(i)
    def info = getInfo(i)
    map[name] << info
  }
}

答案 1 :(得分:2)

使用Java流:

Stream.of("a", "b", "c", "a1", "b1", "c1", "a2", "b2", "c2")
        .parallel()
        .forEach({ println it })