— Salom, Amigo! Men ko'ryapman, sen iplarni o'rganishda katta yutuqlarga erishayapsan.
— Bu qiyin emas ekan.
— Bu juda yaxshi! Bugun oson dars, bu darsning mavzusi – join metodi.
Bir vaziyatni tasavvur qil: bosh ip biron bir vazifani bajarish uchun qiz ipni yaratdi. Vaqt o'tadi, va mana bosh ipga qiz ipning ishlash natijalari kerak bo'ladi. Lekin qiz ip hali ishini tugatmagan. Bosh ip nima qilish kerak?
— Ha, bosh ip nima qilsin?
— Bu uchun join metodi bor. Uning mohiyati shundaki. Bir ip ikkinchi ipning ishini to'liq tugatgunicha kutadi:
| Kod | Tavsif |
|---|---|
|
Runnable interfeysini amalga oshiradigan sinf. |
|
Bosh ip qiz ipni yaratadi – thread1 obyekti. Keyin uni ishga tushiradi – thread1.start(); Va uning tugashini kutadi – thread1.join(); |
Bir ip ikkinchi ip obyekti uchun join metodini chaqirishi mumkin. Natijada birinchi ip (metodni chaqirgan) ikkinchi ip (uning obyekti metodi chaqirildi) ishini tugatgunicha o'z ishini to'xtatadi.
Bu yerda ikkita narsani ajratish kerak: aslida ip - buyruqlarni ijro etuvchi alohida jarayon, va ip obyekti (Thread obyekti) bor.
— Va bu hammasi?
— Ha.
— Nima uchun ipni yaratib, darhol uni tugashini kutish kerak?
— Darhol kotarish shart emas. Lekin bir muddat o'tgach, ehtiyoj tug'ilishi mumkin. Bosh ip birinchi qiz ip ishga tushgandan so'ng boshqa iplar bilan ko'p vazifalarni topshirishi mumkin (ularni yaratib va start metodni chaqirib), keyin esa hammasi, boshqa ishlari qolmaydi, birinchi qiz ipning ish natijalarini qayta ishlash kerak. Bunday hollarda, albatta, boshqa ipning ishini tugashini kutish kerak bo'lganda, join metodi chaqirilishi kerak.
— Tushunarli.
GO TO FULL VERSION