Иерархическая блокировка и Executor-ы в Java?
Я вижу зависимость задач друг от друга (через данные). Пусть завершив свою работу, задача A запускает задачи B и C и никаких блокировок.

Или можно иметь некоторое хранилище данных и некоторую совокупность обработчиков воздействующих на данные н-р:
Один обработчик берет объекты типа Order у которых состояние NEW ставит им состояние CHECKED или FRAUD по какой-то своей логике.
Другой обработчик берет Order в состоянии CHECKED проводит транзакцию и ставит PAID или NOT_PAID. И т.д.
Архитектурный шаблон Blackboard_system.
Я бы посоветовал Akka.io. 
EventA -> ОбработчикA -> EventB -> ОбработчикB

На каждого обработчика можно отдельно настроить корзину и количество потоков. Есть возможность организации роутеров событий, akka.io/