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 次 |
最近记录: |