Есть заданное количество сервисов, которые выполняют некие действия над задачей. Каждый из этих сервисов работает в своем потоке, одновременно обслуживает только 1 задачу. Есть очередь задач. Каждая задача должна обрабатываться либо всем сервисами/либо конечным числом (4 из 10). Это заданно внутри свойств самой задачи. Есть некий контроллер, который берет задачу из очереди и отправляет на выполнение на требуемые сервисы.
Так вот... как бы это наиболее грамотно реализовать с помощью классов из java.util.concurrent
Почитал доки, статейки разные, вроде уже примерно нарисовалась картина как это делать, но хочется совета, как бы это сделали вы.