Sobes.tech
Junior — Middle

Aký je rozdiel medzi metódami notify a notifyAll v kontexte synchronizácie vlákien?

sobes.tech AI

Odpoveď od AI

V Jave sa metódy notify a notifyAll sa používajú na prebudenie vlákien, ktoré čakajú na monitore objektu (cez wait).

  • notify() prebudí náhodné vlákno čakajúce na tomto objekte.
  • notifyAll() prebudí všetky vlákna čakajúce na tomto objekte.

Použitie notify je vhodné, keď stačí prebudenie jedného vlákna, napríklad pri implementácii fronty s jedným spotrebiteľom. notifyAll je užitočné, keď je potrebné prebudenie všetkých vlákien, aby mohli skontrolovať podmienku a pokračovať v práci, napríklad pri zložitejšej logike synchronizácie.

Je dôležité si uvedomiť, že prebudené vlákna nezačnú okamžite vykonávať — prechádzajú do stavu pripravenosti a čakajú na získanie monitora.