No entanto, se você tentar executar sbt “run -n StreamApp” vs sbt “run -n StreamQueueApp”, descobrirá que isso é mais lento do que antes.Principalmente quando o consumidor é lento, ele imprime vários P no início, o que significa que os produtores não esperam que todos os consumidores terminem para produzir as tarefas.No entanto, sob alto paralelismo e carga, cada trabalho operando em uma única fila pode tornar essa fila um gargalo.Ao executá-lo com sbt “run -n BlockingQueueApp”, podemos ver que é muito mais rápido quando o consumidor é mais rápido ou tem a mesma velocidade do produtor.A maneira mais fácil de fazer isso é produzindo e consumindo as tarefas em sequência, por exemplo:
No entanto, é desnecessariamente lento.
Fonte: https://www.binwang.me/2023-08-27-Compare-Task-Processing-Approaches-in-Scala.html