Sobes.tech
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:

  1. Az első 5 feladat azonnal futni fog 5 alap szálon, mivel az aktív szálak száma kevesebb, mint a corePoolSize.
  2. 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.
  3. 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.