Groovy 如何了解GPAR runForkJoin和forkOffChild方法

Groovy 如何了解GPAR runForkJoin和forkOffChild方法,groovy,gpars,Groovy,Gpars,我正在尝试使用这些方法,但没有成功。如果有人能帮助我,我会很高兴的。 我正在使用groovy,我有两个字符串映射。 我想用线程在两个映射的字符串之间进行匹配(由GPAR使用) 例如: def firstMap=[“a”:“a”,“b”:“b”] def secondMap=[“c”:“c”,“a”:a”] 在贴图之间求等的正常方法是 fistMap.findAll().each { first -> secondMap.findAll.each { second ->

我正在尝试使用这些方法,但没有成功。如果有人能帮助我,我会很高兴的。 我正在使用groovy,我有两个字符串映射。 我想用线程在两个映射的字符串之间进行匹配(由GPAR使用) 例如: 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(?)
     }
  }
}
我对这个有点陌生,我真的不知道如何让它工作。 我将感谢任何帮助。 谢谢
或者。

我建议使用并行集合:

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 } }
}

执行第一位代码的更好方法是
firstMap.findResult{fk,fv->secondMap.findResult{sk,sv->fk==sk&&fv==sv?[(fk):fv]:null}