如何关于Gpars runForkJoin和forkOffChild方法

时间:2012-09-30 11:47:12

标签: groovy gpars

我正在尝试使用这些方法但没有成功,如果有人可以帮助我,我会很高兴。 我正在使用groovy,我有2个字符串映射。 我想用线程匹配2个映射的字符串(使用gpars) 例如 : def firstMap = [“a”:“A”,“b”:“B”] def secondMap = [“c”:“C”,“a”:A“]

地图之间的正常平等方式是

fistMap.findAll().each { first ->
    secondMap.findAll.each { second ->
       if (first.key.equals(second.key) && (first.value.equlas(second.value))
         //saveItIntoArray
  }
}

我想用gpars线程来做,所以我尝试了:

withPool(2) {
    runForkJoin(firstMap) { task ->
      task.each {
         secondMap.each {
            //equals
        }
        forChild(?)
     }
  }
}

我对此有点新意,我真的不知道如何让它发挥作用。 我将不胜感激任何帮助。 谢谢, 或

1 个答案:

答案 0 :(得分:2)

我建议使用并行集合:

def firstMap = ["a":"A", "b":"B"]
def secondMap = ["c":"C", "a":"A"].asImmutable()
withPool{
    println firstMap.findAllParallel { fk, fv -> secondMap.findResult { sk, sv -> fk == sk && fv == sv ? [(fk):fv] : null } }
}