O Threadpool maior ou o ExecorService adicional quando o novo tipo de thread será executado?
-
26-09-2019 - |
Pergunta
Eu tenho uma pergunta relacionada à possível sobrecarga de ExecutorService
s em java.
A presente implementação tem ExecutorService A
com uma capacidade de 5 fios.
- Ele executa tópicos do tipo
A
. - modelo
A
Os tópicos fazem algumas leituras e escrita de banco de dados.
Agora, um tópico do tipo B
vai correr depois algum Tópicos do tipo A
terminou.
- O número de tipo
B
Os threads que serão executados são diferentes de tempos em tempos. - modelo
B
Os threads fazem alguns IO do sistema de arquivos (não do banco de dados).
Eu também deveria
- Adicione um novo
ExecutorService
Para lidar com o tipoB
tópicos - ou devo aumentar a capacidade de
ExecutorService A
e tipo de execuçãoB
Tópicos com esse também?
Estou pensando que pode haver alguma sobrecarga extra para Java ter dois ExecutorService
s, mas, por outro lado, o número total de roscas aumentará de qualquer maneira. Isso importa?
Solução
Vou recomendar dois ExecutorServices
, então você pode aproveitar os diferentes ExecutorService
s fornecido pelo java.util.concurrent
pacote.
Facilita o código e a sobrecarga é ignorável.
ExecutorService
a com um pool de rosca fixo definido para cinco threads.ExecutorService
b com uma piscina de fios em cache.
Outras dicas
Se você está falando de 5 threads e não está esgotando a capacidade do seu pool de threads, eu tenderia a dizer que a sobrecarga será insignificante de qualquer maneira, e você deve seguir o que considera o caminho mais simples.