Sobes.tech
Senior

Եթե corePoolSize=5, maxPoolSize=10, հերթ=100 և սկզբում ուղարկենք 5 առաջադրանք, հետո ևս 7-ը, ինչ կլինի?

sobes.tech AI

Պատասխան AI-ից

Տրված ThreadPoolExecutor պարամետրերով՝

  • corePoolSize = 5
  • maxPoolSize = 10
  • հերթ (BlockingQueue) = 100

Ի՞նչ կլինի, երբ սկզբում ավելացնենք 5 առաջադրանք, իսկ հետո ևս 7:

  1. Առաջին 5 առաջադրանքները անմիջապես կսկսվեն 5 հիմնական թելերով, քանի որ ակտիվ թելերի թիվը փոքր է, քան corePoolSize:
  2. Հաջորդ 7 առաջադրանքները (6-ից մինչև 12) կտեղադրվեն հերթում, քանի որ corePoolSize-ը արդեն հասել է և հերթը չի լրացել:
  3. Քանի որ հերթը չի լրացել (կարող է տեղավորել մինչև 100), նոր թելեր ավելացնելով՝ ավելորդ թելեր չեն ստեղծվի, նույնիսկ եթե maxPoolSize=10:

Արդյունք՝

  • 5 ակտիվ թելեր (core)
  • 7 առաջադրանքներ հերթում
  • Թելեր 6-ից մինչև 10 (maxPoolSize) չեն ստեղծվում, քանի որ հերթը չի լրացել:

Միայն այն ժամանակ, երբ հերթը լցվի (ավելի քան 100 առաջադրանք) և հիմնական թելերը զբաղված լինեն, կստեղծվեն լրացուցիչ թելեր մինչև maxPoolSize։