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

Sap*_*Sap 7 concurrency groovy multithreading

到目前为止,我的代码就像在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)
Run Code Online (Sandbox Code Playgroud)

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

Chr*_*orf 12

有一个名为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
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 您也可以使用`foldParallel`来消除对外部初始化的`map`的要求 (2认同)