Блок ThreadPoolExecutor, когда очередь заполнена?

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

Ответы на вопрос(6)

Ваш ответ на вопрос