Sobes.tech
Senior

Kas notiks, ja corePoolSize=5, maxPoolSize=10, rinda=100 un vispirms nosūtām 5 uzdevumus, tad vēl 7?

sobes.tech AI

Atbilde no AI

Ar dotajiem ThreadPoolExecutor parametriem:

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

Kas notiks, vispirms pievienojot 5 uzdevumus, un pēc tam vēl 7:

  1. Pirmie 5 uzdevumi tiks nekavējoties izpildīti 5 galvenajos pavedienos, jo aktīvo pavedienu skaits ir mazāks par corePoolSize.
  2. Nākamie 7 uzdevumi (no 6. līdz 12.) tiks ievietoti rindā, jo corePoolSize jau ir sasniegts un rinda nav pilna.
  3. Tā kā rinda nav pilna (var ietilpt līdz 100), jauni pavedieni virs corePoolSize netiek veidoti, pat ja maxPoolSize=10.

Rezultāts:

  • 5 aktīvi pavedieni (core)
  • 7 uzdevumi rindā
  • Pavedieni no 6. līdz 10. (maxPoolSize) netiek veidoti, jo rinda nav pilna.

Tikai tad, kad rinda aizpildīsies (vairāk nekā 100 uzdevumi) un galvenie pavedieni būs aizņemti, tiks veidoti papildu pavedieni līdz maxPoolSize.