Jos*_*ehl 2 java groovy multithreading
现在我有这个Groovy代码来运行一系列任务:
CountDownLatch latch = new CountDownLatch(tasks.size);
for( task in tasks ) {
Thread.start worker.curry(task, latch)
}
latch.await(300L, TimeUnit.SECONDS);
Run Code Online (Sandbox Code Playgroud)
我想将同时线程的数量限制为一定数量t.它现在的编写方式,对于n任务,n线程"立刻"创建.我想过使用多个锁存器或某种回调,但无法找到一个好的解决方案.
一旦运行线程降到下面t,解决方案应该启动新的任务线程,直到数字运行到达t或没有未运行的任务.
您应该检查GPars并使用列出的抽象之一.然后,您可以在withPool()中指定要创建的编号.我喜欢fork/join:
withPool(4) { pool ->
runForkJoin(rootTask) { task ->
task.eachTask { forkChild(task) }
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2521 次 |
| 最近记录: |