Я пытаюсь выполнить множество задач с помощью ThreadPoolExecutor. Ниже приведен гипотетический пример:
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, поскольку количество задач превышает размер рабочей очереди. Тем не менее, желаемое поведение, которое я ищу, состоит в том, чтобы иметь блок основного потока, пока в очереди не будет места. Каков наилучший способ сделать это?