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:
- Die ersten 5 Aufgaben werden sofort in 5 Core-Threads ausgeführt, da die Anzahl der aktiven Threads kleiner als corePoolSize ist.
- 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.
- 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.