Multithreading 如何在Groovy中并发运行循环?

Multithreading 如何在Groovy中并发运行循环?,multithreading,concurrency,groovy,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) HashMap=newhashmap() 对于(char i='a';i,有一个名为的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)
HashMap=newhashmap()

对于(char i='a';i,有一个名为的Groovy扩展。它支持多种并发技术,如Fork/Join或Actor模型。使用GPAR,您的代码可能如下所示(我无法确切了解您在迭代什么):

导入groovyx.gpars.GParsPool
映射映射=[:]作为ConcurrentMap
GParsPool.withPool{
chars.eachParallel{i->
def name=getName(i)
def info=getInfo(一)
使用Java流映射[名称]:


您还可以使用
foldParallel
来删除外部初始化的
map
@tim我认为GPAR已经在1.8中迁移到了核心Groovy,是吗?哎呀,for循环应该是“a”到“z”,而不是“a”到“a”。我将这些字符附加到URL的末尾,以获取和索引网页的内容ges@Don它在groovy中作为一个jar分发,但它不是groovy核心的一部分,所以您仍然需要将它添加到classpath@Grrrrr在本例中,您可以编写
(“a”。“z”).eachParallel{i->
,它使用Groovy范围从a到z。
import groovyx.gpars.GParsPool

Map map = [:] as ConcurrentMap

GParsPool.withPool {
  chars.eachParallel { i ->
    def name = getName(i)
    def info = getInfo(i)
    map[name] << info
  }
}
Stream.of("a", "b", "c", "a1", "b1", "c1", "a2", "b2", "c2")
        .parallel()
        .forEach({ println it })