Pool de threads versus muitos threads individuais

Estou no meio de um problema em que não consigo decidir qual solução tomar.

O problema é um pouco único. Vamos colocar desta forma, estou recebendo dados da rede continuamente (2 a 4 vezes por segundo). Agora, cada dado pertence a um diferente, digamos, grupo. Agora, vamos chamar esses grupos, group1, group2 e assim por diante.

Cada grupo tem uma fila de trabalhos dedicada na qual os dados da rede são filtrados e adicionados ao seu grupo correspondente para processamento.

No começo eu criei um thread dedicado por grupo que pegava os dados da fila de tarefas, processava-os e depois entrava no estado de bloqueio (usando o Linked Blocking Queue).

Mas o meu senior sugeriu que eu deveria usar pools de threads porque desta maneira os threads não serão bloqueados e poderão ser usados ​​por outros grupos para processamento.

Mas aqui está a coisa, os dados que estou obtendo são rápidos o suficiente e o tempo que um encadeamento leva para processá-lo é longo o suficiente para que o encadeamento, possivelmente, não entre no modo de bloqueio. E isso também garantirá que os dados sejam processados ​​sequencialmente (o job 1 é executado antes do job 2), o que, no pool, tem pouquíssimas chances, pode não acontecer.

Meu senior também está empenhado no fato de que o pool também vai nos poupar muita memória, porque os threads são POOLED (estou pensando que ele realmente foi para a palavra;)). Enquanto eu não concordo com isso porque, eu pessoalmente acho, agrupados ou não cada segmento recebe sua própria memória de pilha. A menos que haja algo em pools de threads que eu não conheço.

Uma última coisa, sempre achei que o pool ajuda onde os trabalhos aparecem em um grande número por um curto período de tempo. Isso faz sentido porque a desova de thread seria uma perda de desempenho porque o tempo gasto para iniciar um thread é muito mais do que o tempo gasto fazendo o trabalho. Então agrupar ajuda muito aqui.

Mas no meu caso group1, group2, ..., groupN sempre permanecem vivos. Então, se houver dados ou não, eles ainda estarão lá. Então a desova do thread não é o problema aqui.

Meu senior não está convencido e quer que eu vá com a solução de pooling porque sua pegada de memória é ótima.

Então, qual caminho seguir?

Obrigado.

questionAnswers(2)

yourAnswerToTheQuestion