Pergunta

Eu tenho uma pergunta relacionada à possível sobrecarga de ExecutorServices 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 tipo B tópicos
  • ou devo aumentar a capacidade de ExecutorService A e tipo de execução B Tópicos com esse também?

Estou pensando que pode haver alguma sobrecarga extra para Java ter dois ExecutorServices, mas, por outro lado, o número total de roscas aumentará de qualquer maneira. Isso importa?

Foi útil?

Solução

Vou recomendar dois ExecutorServices, então você pode aproveitar os diferentes ExecutorServices 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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top