-
Ob'ektning barcha holatlari qanday
Thread
?- YANGI
- MUVOFIQ
- BLOKLANGAN
- KUTILADI
- TIMED_WAITING
- TUG'ILGAN
-
Blokka kirishda ip qanday holatlarga o'tishi mumkin
synchronized
?- MUVOFIQ
- BLOKLANGAN
RUNNABLE da, belgilangan kod bloki
synchronized
boshqa ip bilan band bo'lmasa. Aks holda, bizning ipimiz BLOCKED holatini oladi va mutex ob'ektining chiqarilishini kutadi. - Usulni chaqirganda ip qaysi holatga o'tadi
wait()
?Ushbu usulni chaqirish ipni KUTISH holatiga qo'yadi.
Usul faqat joriy oqim tomonidan "qulflangan" mutex ob'ektidagiwait()
blok ichida chaqirilishi mumkin , aks holda usul IllegalMonitorStateException istisnosini keltirib chiqaradi .synchronized
Object monitor = getMonitor(); synchronized(monitor) { … monitor.wait(); … }
Usul chaqirilgandawait()
joriy ip ob'ektdan qulfni bo'shatadi va KUTISH holatiga kiradi va usul boshqa ip tomonidanmonitor
chaqirilishini 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()
-
Usulni chaqirganda ip qaysi holatga o'tadi
Ushbu usulni chaqirish ipni TIMED_WAITING holatiga qo'yadi.wait(500)
?
Usulga o'xshabwait()
, uni faqat joriy ip tomonidan "qulflangan (qulflangan)" mutex ob'ektidagiwait(timeout)
blok ichida chaqirish mumkin .synchronized
Object monitor = getMonitor(); synchronized(monitor) { … monitor.wait(500); … }
Usulni chaqirganda
wait()
, joriy ip ob'ektdan qulfni chiqaradimonitor
va 500 millisekundga uyqu rejimiga o'tadi. Ob'ektmonitor
boshqa ip tomonidan qo'lga olinishi mumkin.
500 millisekunddan so'ng ip uyg'onadi va agarmonitor
u 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 keyinmonitor.wait()
ip KUTISH holatiga o'tadi.notify()
Ob'ektda boshqa ip tomonidan chaqirilgan usul,monitor
agar monitor ob'ekti boshqa oqim tomonidan ushlanmasa, ipni KUTISH holatidan RUNNABLE holatiga, aks holda BLOCKED holatiga o'tkazadi. -
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. -
Sinxronlashtirilgan blokdagi uchta ip
Ulardan ikkitasi BLOKLANGAN holatga, bittasi ISHLAB CHIQARISH holatiga o'tadiwait()
mutex ob'ekti deb ataladi. To'rtinchi ip chaqirsa, bu iplar qaysi holatga o'tadinotifyAll()
? -
Joriy ipni TIMED_WAITING holatiga o'tkazishiga va o'tkazishiga qaramay, ular o'rtasida sezilarli farqlar mavjud:join(500)
dan qanday farq qiladiwait(500)
?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)
-
wait(500)
dan qanday farq qiladisleep(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.
Chaqirilgandawait(500)
joriy ip sinxronlashtirilgan ob'ektdan qulfni chiqaradi va 500 millisekundga uyqu rejimiga o'tadi. -
Usulni chaqirganda ip qaysi holatga o'tadi
Usul chaqirilgandayield()
?yield()
joriy ip o'z navbatini o'tkazib yuboradi va java darhol keyingi ipni bajarishga o'tadi. Ip shtatdan shtatgarunning
o'tadiready
. Ishlayotgan va tayyor holatlar RUNNABLE holatining pastki holatlaridir.
GO TO FULL VERSION