gpt4 book ai didi

groovy - 在 Groovy 中如何同时执行两个任务并等待结果?

转载 作者:行者123 更新时间:2023-12-02 14:33:16 33 4
gpt4 key购买 nike

我有一个大型处理任务,我相信通过并发和并行性可以提高该任务的效率。

我查看了 GPars 文档,发现它们非常令人困惑,所以我希望这里的人们能够提供帮助。

我想要并行执行的第一个任务目前如下所示:

def providerOneProgrammes = providerOneProgrammeService.getProgrammes(timeWindow)
def providerTwoProgrammes = providerTwoProgrammeService.getProgrammes(timeWindow)

两者都返回对象列表,并且都可以并行运行。

我想一起执行它们,然后等待它们完成,然后再处理返回列表(然后我将查找列表之间的匹配项,但我稍后会讨论)。

谢谢

拉克什

最佳答案

这里利用 GPar 的最简单方法是使用 callAsync。这是一个简单的例子:

@Grab(group='org.codehaus.gpars', module='gpars', version='1.0-beta-2')

import groovyx.gpars.GParsPool

def providerOneProgrammeService(timeWindow) {
println "p1 starts"
Thread.sleep(4000)
println "p1 still going"
Thread.sleep(4000)
println "p1 ends"
return "p1 return value"
}

def providerTwoProgrammeService(timeWindow) {
println "p2 starts"
Thread.sleep(5000)
println "p2 still going"
Thread.sleep(5000)
println "p2 still going"
Thread.sleep(5000)
println "p2 ends"
return "p2 return value"
}

def results = []
GParsPool.withPool {
results << this.&providerOneProgrammeService.callAsync("arg1")
results << this.&providerTwoProgrammeService.callAsync("arg2")
}
println "done ${results*.get()}"

关于groovy - 在 Groovy 中如何同时执行两个任务并等待结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11529521/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com