我正在尝试使用 ThreadPoolExecator 执行许多任务:
def workQueue = new ArrayBlockingQueue<Runnable>(3, false)
def threadPoolExecutor = new ThreadPoolExecutor(3, 3, 1L, TimeUnit.HOURS, workQueue)
for(int i = 0; i < 100000; i++)
threadPoolExecutor.execute(runnable)
问题是,由于任务的数量超过了工作队列的大小,我很快就得到了 java.util.concurrent.RejectedExecutionException
。但是,我所期望的行为是拥有主线程块,直到队列中有空间为止。实现这一目标的最佳方法是什么?