Controlando a ordem de execução da tarefa com o ExecutorService

Eu tenho um processo que delega tarefas assíncronas em um pool de threads. Eu preciso garantir que certas tarefas sejam executadas em ordem. Então por exemplo

As tarefas chegam em ordem

Tarefas a1, b1, c1, d1, e1, a2, a3, b2, f1

As tarefas podem ser executadas em qualquer ordem, exceto onde houver uma dependência natural; portanto, a1, a2, a3 devem ser processados nessa ordem, alocando o mesmo encadeamento ou bloqueando-os até que eu saiba que a tarefa # anterior foi concluída.

Atualmente, ele não usa o pacote Java Concurrency, mas estou pensando em mudar para aproveitar o gerenciamento de encadeamentos.

Alguém tem uma solução semelhante ou sugestões de como conseguir isso

questionAnswers(8)

yourAnswerToTheQuestion