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:
- Pirmie 5 uzdevumi tiks nekavējoties izpildīti 5 galvenajos pavedienos, jo aktīvo pavedienu skaits ir mazāks par corePoolSize.
- Nākamie 7 uzdevumi (no 6. līdz 12.) tiks ievietoti rindā, jo corePoolSize jau ir sasniegts un rinda nav pilna.
- 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.