Sobes.tech
Junior — Middle

Synchronized ilə işarələnmiş metod daxilində cari obyekt üzərində wait() metodunu çağırsaq, axın nə olacaq?

sobes.tech Süni İntellekt

AI-dan cavab

Əgər synchronized açar söz ilə işarələnmiş metod daxilində cari obyekt üzərində wait() metodu çağırılsa, iş axını:

  • Obyektin monitorunu (kilidini) azad edəcək, bu da digər iş parçalarının sinxronlaşdırılmış blok və ya metod daxilinə daxil olmasına imkan verir.
  • wait vəziyyətinə keçəcək, digər bir iş parçacı notify() və ya notifyAll() çağırana qədər.

Beləliklə, wait() cari iş parçacığının icrasını müvəqqəti dayandırır və monitoru azad edir, bu da qarşılıqlı kilidlənmələrin qarşısını almağa və iş parçacqları arasında əməkdaşlığı həyata keçirməyə kömək edir.

Nümunə:

synchronized(this) {
    while (!şərt) {
        wait(); // monitoru azad edir və bildiriş gözləyir
    }
    // oyandırıldıqdan sonra icra olunan kod
}