-
Obyektin bütün halları hansılardır
Thread
?- YENİ
- ÇALIŞABİLƏN
- BLOK OLUNUB
- GÖZLƏYİR
- TIMED_WAITING
- XİTAM EDİLDİ
-
Bloka daxil olarkən mövzu hansı vəziyyətlərə gedə bilər
synchronized
?- ÇALIŞABİLƏN
- BLOK OLUNUB
RUNNABLE-də, işarələnmiş kod bloku
synchronized
başqa bir ip tərəfindən tutulmursa. Əks halda, mövzumuz BLOCKED vəziyyətini alacaq və mutex obyektinin buraxılmasını gözləyəcək. - Metod çağırarkən mövzu hansı vəziyyətə keçəcək
wait()
?Bu metodun çağırılması mövzunu GÖZLƏMƏ vəziyyətinə gətirir.
Metod yalnız cari ip tərəfindən "kilidlənmiş" bir mutex obyektindəwait()
blok daxilində çağırıla bilər , əks halda üsul IllegalMonitorStateException istisnasını atacaq .synchronized
Object monitor = getMonitor(); synchronized(monitor) { … monitor.wait(); … }
Metod çağırıldıqdawait()
, cari ip obyektdən kilidi buraxır və metodun başqa bir ip tərəfindənmonitor
çağırılmasını gözləyərək GÖZLƏMƏ vəziyyətinə keçir . Bu baş verən kimi ip oyanacaq və monitor məşğul deyilsə, onu tutub işə davam edəcək. Monitoru başqa bir ip tutursa, cari ip BLOCKED vəziyyətinə keçəcək.monitor.notify()
monitor.notifyAll()
-
Metod çağırarkən mövzu hansı vəziyyətə keçəcək
Bu metodun çağırılması mövzunu TIMED_WAITING vəziyyətinə gətirir.wait(500)
?
Metodla bənzətməkləwait()
, o, yalnız cari ip tərəfindən “kilidlənmiş (kilidlənmiş)” mutex obyektindəwait(timeout)
blok daxilində çağırıla bilər .synchronized
Object monitor = getMonitor(); synchronized(monitor) { … monitor.wait(500); … }
Metod çağırarkən
wait()
, cari ip kilidi obyektdən buraxırmonitor
və 500 millisaniyəlik yuxu rejiminə keçir. Obyektmonitor
başqa mövzu ilə tutula bilər.
500 millisaniyədən sonra ip oyanacaq vəmonitor
məşğul olmasaydı, onu tutub işə davam edəcək.
Monitoru başqa bir ip tutursa, cari ip BLOCKED vəziyyətinə keçəcək.Metod çağırarkən mövzu hansı vəziyyətə keçəcək
notify()
?Object monitor = getMonitor(); synchronized(monitor) { … monitor.wait(); … }
-dan sonramonitor.wait()
mövzu GÖZLƏMƏ vəziyyətinə keçəcək.notify()
Obyektdə başqa mövzu ilə çağırılan metod,monitor
monitor obyekti başqa bir ip tərəfindən tutulmadığı halda ipi GÖZLƏYƏN vəziyyətdən İŞLƏNƏBİLƏN vəziyyətə, əks halda BLOCKED vəziyyətinə keçirəcək. -
Metod çağırarkən mövzu hansı vəziyyətə keçəcək
notifyAll()
?notifyAll()
bütün mövzuları "qalacaq". Bütün "yatmış" (GÖZLƏYƏN) iplərdən biri RUNNABLE vəziyyətinə keçəcək, istifadə olunan obyektin monitorunu ələ keçirəcək və işini davam etdirəcək. Qalanları BLOKLANMİŞ vəziyyətdə olacaq. İlk "oyanan" ip hər kəsin gözlədiyi monitoru buraxan kimi, onun taleyi növbəti iplə təkrarlanacaq (ixtiyari bir ip BLOCKED vəziyyətindən RUNNABLE vəziyyətinə keçəcək). Bu, bütün "oyanmış" mövzular BLOKLANMİŞ vəziyyətdən çıxana qədər davam edəcək. -
Sinxronlaşdırılmış blokdakı üç mövzu
Onlardan ikisi BLOKLANABİLƏN vəziyyətə, biri İŞLƏBİLƏN vəziyyətə keçəcəkwait()
mutex obyekti adlanır. Dördüncü ip çağırsa, bu mövzular hansı vəziyyətə gedəcəknotifyAll()
? -
Cari ipi TIMED_WAITING vəziyyətinə köçürməsinə vəjoin(500)
-dən nə ilə fərqlənirwait(500)
?join(500)
keçəcəyinə baxmayaraq , onlar arasında əhəmiyyətli fərqlər var: bu blokun sinxronlaşdırıldığı obyektdə sinxronlaşdırılmış blok daxilində çağırılan bir iplə çağırılır . Çağırılan zaman cari başlıq metodu tamamlanmaq üçün çağırılan ip üçün 500 millisaniyə gözləyəcək. Zəng edildikdə, cari ip sinxronlaşdırılmış obyektdən kilidi buraxacaq və 500 millisaniyəlik yuxu rejiminə keçəcək. 500 millisaniyədən sonra hər iki halda iplər işləməyə davam edəcək.wait(500)
join(500)
wait(500)
join(500)
join()
wait(500)
-
wait(500)
-dən nə ilə fərqlənirsleep(500)
?sleep(500)
mövzuda çağırılır,wait(500)
bu blokun sinxronlaşdırıldığı obyektdə sinxronlaşdırılmış blok daxilində çağırılır.
Çağırılan zamansleep(500)
cari ip 500 millisaniyə gözləyəcək, sonra işini davam etdirəcək.
Zəng edildikdə,wait(500)
cari ip sinxronlaşdırılmış obyektdən kilidi buraxacaq və 500 millisaniyəlik yuxu rejiminə keçəcək. -
Metod çağırarkən mövzu hansı vəziyyətə keçəcək
Metod çağırıldıqdayield()
?yield()
, cari mövzu “növbəsini atlayır” və java dərhal növbəti ipin icrasına keçir. Mövzu dövlətdənrunning
ştata keçirready
. Çalışan və hazır vəziyyətlər RUNNABLE vəziyyətinin alt dövlətləridir.
GO TO FULL VERSION