有没有办法让我并行运行固定的最大线程数,并在其中一个线程完成后立即重用Runnable对象?因此,给定Runnable obj的N组运行参数,并且只有M个Runnable对象(M < N),有没有办法确保一旦使用Runnable对象的一个线程完成,我就使用相同的Runnable obj启动一个新线程(因此一次最多运行M个线程)?
发布于 2015-04-29 00:00:37
您可以实现生产者-消费者模式,如下所示:
int n = 10;
Executor executor = Executors.newFixedThreadPool(n);
final BlockingQueue<Object> tasks = new ArrayBlockingQueue(1024);
for (int i = 0; i < n; i++) {
executor.execute(new Runnable() {
@Override
public void run() {
try {
while (!Thread.currentThread().isInterrupted()) {
Object task = tasks.take();
// process task
}
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
});
}
tasks.put(new Object());https://stackoverflow.com/questions/29924120
复制相似问题