Sobes.tech
Senior

O que acontecerá se corePoolSize=5, maxPoolSize=10, fila=100 e inicialmente forem enviados 5 tarefas, depois mais 7?

sobes.tech IA

Resposta da IA

Com os parâmetros dados do ThreadPoolExecutor:

  • corePoolSize = 5
  • maxPoolSize = 10
  • fila (BlockingQueue) = 100

O que acontecerá ao adicionar primeiro 5 tarefas e depois mais 7:

  1. As primeiras 5 tarefas serão executadas imediatamente em 5 threads principais, pois o número de threads ativos é menor que corePoolSize.
  2. As próximas 7 tarefas (da 6ª à 12ª) serão colocadas na fila, pois corePoolSize já foi atingido e a fila não está cheia.
  3. Como a fila não está cheia (pode conter até 100), novos threads além de corePoolSize não são criados, mesmo que maxPoolSize=10.

Resultado:

  • 5 threads ativos (core)
  • 7 tarefas na fila
  • Os threads de 6 a 10 (maxPoolSize) não são criados, pois a fila não está cheia.

Somente quando a fila estiver cheia (mais de 100 tarefas) e os threads principais estiverem ocupados, threads adicionais serão criados até maxPoolSize.