JavaRush /Java Blogu /Random-AZ /Səviyyə 25. Səviyyə mövzusu üzrə müsahibə suallarına cava...
zor07
Səviyyə
Санкт-Петербург

Səviyyə 25. Səviyyə mövzusu üzrə müsahibə suallarına cavablar

Qrupda dərc edilmişdir
Səviyyə 25. Səviyyə - 1 mövzusu üzrə müsahibə suallarına cavablar
  1. 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İ
  2. 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 synchronizedbaş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.

  3. 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ıqda wait(), cari ip obyektdən kilidi buraxır və metodun başqa bir ip tərəfindən monitorç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()

  4. Metod çağırarkən mövzu hansı vəziyyətə keçəcək wait(500)?

    Bu metodun çağırılması mövzunu TIMED_WAITING vəziyyətinə gətirir.
    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ır monitorvə 500 millisaniyəlik yuxu rejiminə keçir. Obyekt monitorbaşqa mövzu ilə tutula bilər.
    500 millisaniyədən sonra ip oyanacaq və monitorməşğ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 sonra monitor.wait()mövzu GÖZLƏMƏ vəziyyətinə keçəcək. notify()Obyektdə başqa mövzu ilə çağırılan metod, monitormonitor 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.

  5. 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.

  6. Sinxronlaşdırılmış blokdakı üç mövzu wait()mutex obyekti adlanır. Dördüncü ip çağırsa, bu mövzular hansı vəziyyətə gedəcək notifyAll()?

    Onlardan ikisi BLOKLANABİLƏN vəziyyətə, biri İŞLƏBİLƏN vəziyyətə keçəcək

  7. join(500)-dən nə ilə fərqlənir wait(500)?

    Cari ipi TIMED_WAITING vəziyyətinə köçürməsinə və 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)

  8. wait(500)-dən nə ilə fərqlənir sleep(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 zaman sleep(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.

  9. Metod çağırarkən mövzu hansı vəziyyətə keçəcək yield()?

    Metod çağırıldıqda 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ən runningştata keçir ready. Çalışan və hazır vəziyyətlər RUNNABLE vəziyyətinin alt dövlətləridir.

PS Şərhlər, əlavələr, düzəlişlər, qeydlər qəbul olunur =)
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION