0
私たちはcobolをjavaにコンパイルするgradleプロジェクトを持っています。これは、Gradleのタスクからのパラメータ(ファイル名)と呼ばれるバッチファイルを経由して起こっている:gradle parallel execコマンドライン
現在def compileSingleFile(String cblFileName) {
exec {
commandLine "${projectDir}/compileFile.bat"
args "${cblFileName}"
ignoreExitValue = true
}
}
、我々はすべてのファイルを別の後にコンパイルされ、ファイルのリストを反復:
task ciBuild {
dependsOn collectFiles
doLast {
cobolfiles.parallelStream().each {file ->
if(file.toUpperCase().endsWith("CBL")) {
compileSingleFile(file)
}
}
}
}
このタスクを一種のスレッドプールで実行する可能性はありますか?例えば、それぞれが別のファイルをコンパイルする10のスレッド?リストが空になるまで?
ありがとうございます!
私は「maxParallelForks」か何かのようなものを設定する必要があります:
doLast { }
例:中project.exec(Closure)を実行しているからあなたを止めるものは何もありませんか? –
スレッドプールを制御できないので、私は個人的に 'parallelStream()'を好まないのです。 [Executors.newFixedThreadPool(int)](https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/Executors.html#newFixedThreadPool(int))と[ CountDownLatch](https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/CountDownLatch.html)完全に制御したい場合 –