私はJSONを通して動作し、いくつかのアクションを実行するとても簡単なスクリプトを持っています。 JSONレコードとアクションとの間には依存関係がないので、実行を少しスピードアップすることができます。このコードが与えられた...この単純なGroovyコードを並行/マルチスレッド化するにはどうすればいいですか?
実行をスレッド化する方法と並行して実行する方法はありますか?私はその話題について少し読んだことがありますが、私はカジュアルなコーダーであり、彼らは私の頭を少し上回っているようです。
私はJSONを通して動作し、いくつかのアクションを実行するとても簡単なスクリプトを持っています。 JSONレコードとアクションとの間には依存関係がないので、実行を少しスピードアップすることができます。このコードが与えられた...この単純なGroovyコードを並行/マルチスレッド化するにはどうすればいいですか?
実行をスレッド化する方法と並行して実行する方法はありますか?私はその話題について少し読んだことがありますが、私はカジュアルなコーダーであり、彼らは私の頭を少し上回っているようです。
最も簡単でかっこいいの一部であるGParsを使用することです:
import static groovyx.gpars.GParsPool.withPool
withPool {
recordJSON.eachParallel {
do stuff here
}
}
あなたは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))
}
うわー、ありがとう。それは確かに簡単で、サンプルサイズのランタイムをほぼ75%改善しました。 – dscl