我想使用Java中的ExecutorService
来实现以下行为。我有大量的任务要完成,这些任务都可以并行完成。我想以下列方式从我的主线程中安排N个任务:
有没有办法调整ExecutorService,如上所述?
答案 0 :(得分:4)
使用由SynchronousQueue构造的N个线程的ThreadPoolExecutor。每次您向线程池提交任务时,主线程将被同步队列阻塞,直到来自池的线程从队列中获取任务。
答案 1 :(得分:0)
您可以将N个任务提交给ExecutorCompletionService,然后循环:
Future<?> f = executor.take(); //blocks until one task completes
executor.submit(nextTask());
通过这样做,您可以确保不再有N个任务同时在执行程序中排队。