Sobes.tech
Senior

Was passiert, wenn corePoolSize=5, maxPoolSize=10, Warteschlange=100 und zuerst 5 Aufgaben eingereicht werden, dann weitere 7?

sobes.tech KI

Antwort von AI

Bei den gegebenen Parametern des ThreadPoolExecutor:

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

Was passiert, wenn zuerst 5 Aufgaben hinzugefügt werden und dann weitere 7:

  1. Die ersten 5 Aufgaben werden sofort in 5 Core-Threads ausgeführt, da die Anzahl der aktiven Threads kleiner als corePoolSize ist.
  2. Die nächsten 7 Aufgaben (von der 6. bis zur 12.) werden in die Warteschlange gestellt, da corePoolSize bereits erreicht ist und die Warteschlange nicht voll ist.
  3. Da die Warteschlange nicht voll ist (sie kann bis zu 100 aufnehmen), werden keine neuen Threads über corePoolSize hinaus erstellt, auch wenn maxPoolSize=10 ist.

Ergebnis:

  • 5 aktive Threads (Core)
  • 7 Aufgaben in der Warteschlange
  • Threads von 6 bis 10 (maxPoolSize) werden nicht erstellt, da die Warteschlange nicht voll ist.

Erst wenn die Warteschlange voll ist (mehr als 100 Aufgaben) und die Core-Threads beschäftigt sind, werden zusätzliche Threads bis maxPoolSize erstellt.