Senior
Mi történik, ha a corePoolSize=5, maxPoolSize=10, sor=100 és először 5 feladatot küldünk, majd még 7-et?
sobes.tech MI
Válasz az MI-től
A megadott ThreadPoolExecutor paraméterekkel:
- corePoolSize = 5
- maxPoolSize = 10
- sor (BlockingQueue) = 100
Mi történik, ha először 5 feladatot adunk hozzá, majd még 7-et:
- Az első 5 feladat azonnal futni fog 5 alap szálon, mivel az aktív szálak száma kevesebb, mint a corePoolSize.
- A következő 7 feladat (6-tól 12-ig) a sorba kerül, mivel a corePoolSize már elérte, és a sor nem telt meg.
- Mivel a sor nem telt meg (akár 100-ig is lehet benne), nem hoznak létre új szálakat a corePoolSize felett, még akkor sem, ha maxPoolSize=10.
Eredmény:
- 5 aktív szál (core)
- 7 feladat a sorban
- A 6-tól 10-ig terjedő szálak (maxPoolSize) nem jönnek létre, mivel a sor nem telt meg.
Csak akkor, amikor a sor megtelik (több mint 100 feladat), és a core szálak foglaltak, akkor hoznak létre további szálakat a maxPoolSize-ig.