我有一个非常简单的groovy脚本,它通过JSON工作并执行一些操作。由于JSON记录和操作之间没有依赖关系,我希望我可以加快执行速度。鉴于此代码......
def recordJSON = new JsonSlurper().parseText(myFile.text)
recordJSON.each{
do stuff here
}
有没有办法线程执行或并行执行?我已经对这个主题做了一些阅读,但我是一个随便的编码器,他们似乎有点过头了。
答案 0 :(得分:7)
最简单的方法是使用属于常规的GPars:
import static groovyx.gpars.GParsPool.withPool
withPool {
recordJSON.eachParallel {
do stuff here
}
}
答案 1 :(得分:1)
如果您对Java线程构造更为熟悉,那么这可能会引起人们的兴趣(Groovy提供了所有常见的Java好东西,而且样板更少):
import java.util.concurrent.*
import groovy.json.*
class MyTask implements Runnable {
File file
void run() {
def recordJSON = new JsonSlurper().parseText(file.text)
println "do stuff here ${file.name}"
}
}
// ------ main
def pool = Executors.newCachedThreadPool()
(1..6).each {
def f = new File("f${it}.json")
pool.submit(new MyTask(file: f))
}