Обычно плохой идеей является блокировка потоков в пуле в ожидании других потоков в том же пуле потоков.
Я бы попробовал изменить дизайн на неблокирующий. Если потоку нужен результат другой операции, которая обрабатывается тем же исполнителем, я бы попросил его передать задачу обратно исполнителю после завершения второй операции. Или поместите объект в очередь для последующего получения после завершения другой работы.
В качестве альтернативы вы можете делать то, что Swing делает с модальными диалоговыми окнами, и иметь поток, который собирается блокировать запуск дочернего потока, чтобы продолжать обрабатывать запросы, пока родительский поток не разблокируется. Это сложно сделать правильно, и вам потребуется вручную управлять потоками, что намного менее безопасно, чем при использовании Executor.