JavaRush /Java blogi /Random-UZ /25-daraja. Daraja mavzusi bo'yicha suhbat savollariga jav...
zor07
Daraja
Санкт-Петербург

25-daraja. Daraja mavzusi bo'yicha suhbat savollariga javoblar

Guruhda nashr etilgan
25-daraja. Daraja mavzusi bo'yicha suhbat savollariga javoblar - 1
  1. Ob'ektning barcha holatlari qanday Thread?

    • YANGI
    • MUVOFIQ
    • BLOKLANGAN
    • KUTILADI
    • TIMED_WAITING
    • TUG'ILGAN
  2. Blokka kirishda ip qanday holatlarga o'tishi mumkin synchronized?

    • MUVOFIQ
    • BLOKLANGAN

    RUNNABLE da, belgilangan kod bloki synchronizedboshqa ip bilan band bo'lmasa. Aks holda, bizning ipimiz BLOCKED holatini oladi va mutex ob'ektining chiqarilishini kutadi.

  3. Usulni chaqirganda ip qaysi holatga o'tadi wait()?

    Ushbu usulni chaqirish ipni KUTISH holatiga qo'yadi.
    Usul faqat joriy oqim tomonidan "qulflangan" mutex ob'ektidagi wait()blok ichida chaqirilishi mumkin , aks holda usul IllegalMonitorStateException istisnosini keltirib chiqaradi .synchronized

    Object monitor = getMonitor();
    synchronized(monitor)
    {
     …
     monitor.wait();}

    Usul chaqirilganda wait()joriy ip ob'ektdan qulfni bo'shatadi va KUTISH holatiga kiradi va usul boshqa ip tomonidan monitorchaqirilishini kutadi . Bu sodir bo'lishi bilanoq, ip uyg'onadi va agar monitor band bo'lmasa, uni ushlab, ishlashni davom ettiradi. Agar monitor boshqa ip bilan band bo'lsa, joriy ip BLOCKED holatiga o'tadi.monitor.notify()monitor.notifyAll()

  4. Usulni chaqirganda ip qaysi holatga o'tadi wait(500)?

    Ushbu usulni chaqirish ipni TIMED_WAITING holatiga qo'yadi.
    Usulga o'xshab wait(), uni faqat joriy ip tomonidan "qulflangan (qulflangan)" mutex ob'ektidagi wait(timeout)blok ichida chaqirish mumkin .synchronized

    Object monitor = getMonitor();
    synchronized(monitor)
    {
     …
     monitor.wait(500);}

    Usulni chaqirganda wait(), joriy ip ob'ektdan qulfni chiqaradi monitorva 500 millisekundga uyqu rejimiga o'tadi. Ob'ekt monitorboshqa ip tomonidan qo'lga olinishi mumkin.
    500 millisekunddan so'ng ip uyg'onadi va agar monitoru band bo'lmasa, uni ushlab, ishlashni davom ettiradi.
    Agar monitor boshqa ip bilan band bo'lsa, joriy ip BLOCKED holatiga o'tadi.

    Usulni chaqirganda ip qaysi holatga o'tadi notify()?

    Object monitor = getMonitor();
    synchronized(monitor)
    {
     …
     monitor.wait();}

    dan keyin monitor.wait()ip KUTISH holatiga o'tadi. notify()Ob'ektda boshqa ip tomonidan chaqirilgan usul, monitoragar monitor ob'ekti boshqa oqim tomonidan ushlanmasa, ipni KUTISH holatidan RUNNABLE holatiga, aks holda BLOCKED holatiga o'tkazadi.

  5. Usulni chaqirganda ip qaysi holatga o'tadi notifyAll()?

    notifyAll()barcha mavzularni "qolib qoladi". Barcha "uyqu" (KUTISH) iplaridan biri RUNNABLE holatiga o'tadi, foydalanilayotgan ob'ektning monitorini oladi va o'z ishini davom ettiradi. Qolganlari BLOKLANGAN holatda bo'ladi. Birinchi "uyg'onish" ipi hamma kutayotgan monitorni qo'yib yuborishi bilan uning taqdiri keyingi ip tomonidan takrorlanadi (ixtiyoriy ip BLOCKED holatidan RUNNABLE holatiga o'tadi). Bu barcha "uyg'ongan" iplar BLOCKED holatidan chiqmaguncha davom etadi.

  6. Sinxronlashtirilgan blokdagi uchta ip wait()mutex ob'ekti deb ataladi. To'rtinchi ip chaqirsa, bu iplar qaysi holatga o'tadi notifyAll()?

    Ulardan ikkitasi BLOKLANGAN holatga, bittasi ISHLAB CHIQARISH holatiga o'tadi

  7. join(500)dan qanday farq qiladi wait(500)?

    Joriy ipni TIMED_WAITING holatiga o'tkazishiga va o'tkazishiga qaramay, ular o'rtasida sezilarli farqlar mavjud: join(500)bu blok sinxronlangan ob'ektda sinxronlashtirilgan blok ichida chaqirilgan ipda chaqirilgan. Qo'ng'iroq qilinganda, joriy ish zarracha usuli tugallanishi uchun chaqirilgan ip uchun 500 millisekund kutadi . Chaqirilganda joriy ip sinxronlashtirilgan ob'ektdan qulfni chiqaradi va 500 millisekundga uyqu rejimiga o'tadi. 500 millisekunddan keyin ikkala holatda ham iplar ishlashda davom etadi.wait(500)
    join(500)wait(500)
    join(500)join()
    wait(500)

  8. wait(500)dan qanday farq qiladi sleep(500)?

    sleep(500)ipda chaqirilgan, wait(500)bu blok sinxronlangan ob'ektdagi sinxronlashtirilgan blok ichida chaqirilgan.
    Chaqirilganda, sleep(500)joriy ip 500 millisekund kutadi, keyin o'z ishini davom ettiradi.
    Chaqirilganda wait(500)joriy ip sinxronlashtirilgan ob'ektdan qulfni chiqaradi va 500 millisekundga uyqu rejimiga o'tadi.

  9. Usulni chaqirganda ip qaysi holatga o'tadi yield()?

    Usul chaqirilganda yield()joriy ip o'z navbatini o'tkazib yuboradi va java darhol keyingi ipni bajarishga o'tadi. Ip shtatdan shtatga runningo'tadi ready. Ishlayotgan va tayyor holatlar RUNNABLE holatining pastki holatlaridir.

PS Sharhlar, qo'shimchalar, tuzatishlar, izohlar qabul qilinadi =)
Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION