我有一个大型的处理任务,我相信它已经成熟,可以提高并发性和并行性.
我看了一下GPars文档,发现它们很混乱,所以我希望这里的人能提供帮助.
我想要并行执行的第一项任务目前看起来像这样:
def providerOneProgrammes = providerOneProgrammeService.getProgrammes(timeWindow) def providerTwoProgrammes = providerTwoProgrammeService.getProgrammes(timeWindow)
两者都返回一个对象列表,两者都可以并行运行.
我想一起执行它们然后在处理返回列表之前等待它们完成(然后我会查找列表之间的匹配但我稍后会讨论).
谢谢
拉克什
解决方法
在这里利用GPars的最简单方法是使用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()}"
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。