Dasturlashdagi multithreading tushunchasi, bu nima degani. Bita protsessorga bir vaqtda bir nechta ish qildirish deb tushunish mumkin.
Hayotiy misol: Hamma oshxonalarga, restoranlarga borgan. Odatda oshxona, restoranlarda. ofitsiantlar (girgitton) ikki xil xizmat ko’rsatishi mumkin.
- Bita ofitsiant bir paytda faqat bita mijozga xizmat ko’rsatishi mumkin. Ya’ni birinchi bita mijozga xizmat ko’rsatadi. Unga xizmat ko’rsatib bo’lgach boshqa mijozga xizmat ko’rsatishni boshlaydi.
- Bitta ofitsiant bir paytda ko’pgina mijozlarga xizmat ko’rsatishi mumkin. Birinchi mijozga xizmat ko’rsatib bo’lmasdan, keyingi mijozga ham xizmat ko’rsatishni boshlashi mumkin.
Bu ikki xil xizmat ko’rsatishni yaxshi yomon tomonlari bor.
- Yaxshi tomoni, birinchi kelgan mijoz birinchi ketadi. Ya’ni tartibga qattiq amal qilinadi. Yomon tomoni esa. kechroq kelgan mijozlar esa birinchisi mijozga xizmat ko’rsatib bo’lishini kutib turishi kerak bo’ladi.
- Bu holatda esa aksi. Yomon tomoni - birinchi kelgan mijoz to’liq xizmat ko’rsatilmagani uchun ko’proq kutib qolishi mumkin. Yaxshi tomoni esa - ikkinchi mijozga tezroq e’tibor qaratiladi.
Odatda ikkinchi formatdagi oshxona, restoranlarda xizmat ko’rsatish yuqoriroq bo’ladi. Shuning uchun bu usul birinchisiga nisbatan ko’proq qo’llaniladi.
Endi esa buni dasturlashga bog’laymiz. Bu yerda misol qilib ko’rsatgan ofitsiantni protessor (CPU) deb tushunsak bo’ladi.
Dasturlash misolida: Biz yozga dasturga ko’p joylardan so’rov kelishi mumkin.
- Multithreading ishlatmagan holatda ko’ramiz. Birinchi zapros (so’rov kelyapti) u kelgan zaprosni qayta ishlab, unga javob bermaguncha, yangi zapros qabul qilmaydi. Boshqa zaproslar esa birinchi zaprosga javob berib bo’linishini kutib turishi zarur.
- Multithreading ishlatilgan holatda nima bo’ladi. Birinchi zapros keldi, uni qabul qiladi. Ikkinchi zapros keldi birinchi zaprosni qisman ishini bajardi (to’liqmas). Va alohida yo’lda (dasturlashda thread deb ataladi) ikkinchi zaprosni qabul qiladi. Bita birinchi zaprosga, bita ikkinchi zaprosga. Agar uchinchi zapros kelsa u ham shu tarzda ishlaydi.
Endi yaxshi yomon tomonlarini ko’rib chiqamiz
- Multithreading ishlatilmagan holatda. Kamchilik tomoni bita zaprosga to’liq javob bermaguncha ikkinchisini qabul qilmaydi. Ya’ni ikkinchi zapros kutib qolishi mumkin. Bu degani zapros yo’qolishiga ham olib kelishi mumkin. Ya’ni zaproslar odatiy holatda 1 minut kutib tura oladi. Bir minutdan so’ng esa ma’lumot yo’qolishi mumkin. Yaxshi tomoni esa tartib aniq bo’ladi. bita zaprosni ma’lumotlari, ikkinchi zaprosni ma’lumotlari bilan aralashib ketish ehtimoli yo’q. Multithreadingli holatda esa bunaqa bo’lish ehtimoli bor (Buni to’g’rilashni ham yo’llari mavjud).
- Multithreading ishlatilgan holatda. Kamchilik tomoni yuqorida aytilganidek. Bita zaprosni ma’lumoti, ikkinchisiniki bilan aralashishi mumkin. Yaxshi tomoni esa ikkinchi zapros kutib turmaydi. Ma’lumot yo’qolish ehtimoli past.
Tushunmovchilik bo’lsa tushunmovchiliklarni yoki fiklaringizni izoh sifatida yozib qoldirsangiz xursand bo’lamiz
©️ Elbek Nurmatov | Java interview questions