¿ThreadPoolExecutor se bloquea cuando la cola está llena?

Estoy tratando de ejecutar muchas tareas usando un ThreadPoolExecutor. A continuación se muestra un ejemplo hipotético:

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)

El problema es que rápidamente obtengo una java.util.concurrent.RejectedExecutionException ya que el número de tareas excede el tamaño de la cola de trabajo. Sin embargo, el comportamiento deseado que estoy buscando es tener el bloque de subprocesos principal hasta que haya espacio en la cola. Cuál es la mejor manera de lograr esto?

Respuestas a la pregunta(6)

Su respuesta a la pregunta