Sobes.tech
Senior

Какво ще се случи, ако corePoolSize=5, maxPoolSize=10, опашка=100 и първо изпратим 5 задачи, след това още 7?

sobes.tech AI

Отговор от AI

С дадените параметри на ThreadPoolExecutor:

  • corePoolSize = 5
  • maxPoolSize = 10
  • опашка (BlockingQueue) = 100

Какво ще се случи при първоначално добавяне на 5 задачи, а след това още 7:

  1. Първите 5 задачи ще се изпълнят веднага в 5 основни нишки, тъй като броят на активните нишки е по-малък от corePoolSize.
  2. Следващите 7 задачи (от 6 до 12) ще бъдат поставени в опашката, тъй като corePoolSize вече е достигнат и опашката не е пълна.
  3. Тъй като опашката не е пълна (може да съдържа до 100), нови нишки над corePoolSize не се създават, дори ако maxPoolSize=10.

Резултат:

  • 5 активни нишки (core)
  • 7 задачи в опашката
  • Нишки от 6 до 10 (maxPoolSize) не се създават, тъй като опашката не е пълна.

Само когато опашката се запълни (повече от 100 задачи) и основните нишки са заети, ще се създават допълнителни нишки до maxPoolSize.