Senior
Եթե corePoolSize=5, maxPoolSize=10, հերթ=100 և սկզբում ուղարկենք 5 առաջադրանք, հետո ևս 7-ը, ինչ կլինի?
sobes.tech AI
Պատասխան AI-ից
Տրված ThreadPoolExecutor պարամետրերով՝
- corePoolSize = 5
- maxPoolSize = 10
- հերթ (BlockingQueue) = 100
Ի՞նչ կլինի, երբ սկզբում ավելացնենք 5 առաջադրանք, իսկ հետո ևս 7:
- Առաջին 5 առաջադրանքները անմիջապես կսկսվեն 5 հիմնական թելերով, քանի որ ակտիվ թելերի թիվը փոքր է, քան corePoolSize:
- Հաջորդ 7 առաջադրանքները (6-ից մինչև 12) կտեղադրվեն հերթում, քանի որ corePoolSize-ը արդեն հասել է և հերթը չի լրացել:
- Քանի որ հերթը չի լրացել (կարող է տեղավորել մինչև 100), նոր թելեր ավելացնելով՝ ավելորդ թելեր չեն ստեղծվի, նույնիսկ եթե maxPoolSize=10:
Արդյունք՝
- 5 ակտիվ թելեր (core)
- 7 առաջադրանքներ հերթում
- Թելեր 6-ից մինչև 10 (maxPoolSize) չեն ստեղծվում, քանի որ հերթը չի լրացել:
Միայն այն ժամանակ, երբ հերթը լցվի (ավելի քան 100 առաջադրանք) և հիմնական թելերը զբաղված լինեն, կստեղծվեն լրացուցիչ թելեր մինչև maxPoolSize։