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