Полагаю, эффект, который вы получаете (в исходном коде), связан с установленным по умолчанию упорядоченным режимом выполнения блокирующих задач.
Если вы используете другой метод executeBlocking с упорядоченным параметром, установленным на false , я полагаю, вы получите параллелизм, пропорциональный размеру пула ваших рабочих потоков - что тебе нужно.
Используя executeBlocking без упорядоченного параметра, вы неявно упорядочили установку на true . Итак, каждое событие l oop thread будет (я полагаю) обрабатывать вызовы в одном контексте, который будет привязан (из-за упорядочения) к одному рабочему потоку. Таким образом, вы получите эффективно 4 одновременных выполнения блокирующих задач - то, что вы заметили. Другой рабочий поток не используется.