4. diel - Multithreading v Jave - Mezivláknová komunikácia
V minulej lekcii, Multithreading v Jave - Synchronizácia v praxi , sme si prvýkrát v praxi vyskúšali synchronizáciu vlákien. Tá je realizovaná pomocou monitorov. Dnes si ukážeme, že možnosti týchto monitorov rozhodne u synchronizácie nekončí.
Mezivláknová komunikácia
Java nám ponúka tri metódy súvisiace s mezivláknovou komunikáciou. Sú
to metódy wait()
, notify()
a
notifyAll()
. S nimi ste sa už istoiste stretli, pretože sú
definované triedou Object
, a teda je každý objekt obsahuje. Na
prvý pohľad to môže vyzerať trochu zmätene - prečo sú tieto metódy
súčasťou každého objektu, prečo je jednoducho nedefinuje trieda
Thread
? Ako možno také metódy využiť? Možno ste si už
všimli, že používanie monitorov rozdelí naše vlákna do skupín podľa
monitorov, ktoré používajú. Vlákna v týchto skupinách sa potom cez
zdieľaný monitor môžu navzájom ovplyvňovať. A pretože vieme, že
monitorom môže byť akýkoľvek objekt, bolo potrebné, aby každý objekt
tieto ovlivňovací metódy obsahoval.
Aby sme mohli tieto metódy na monitore úspešne volať, je potrebné, aby sme v danej chvíli tento monitor vlastnili (nami myslím naše vlákno). A kedy máme istotu, že vlastníme monitor? No, v
...koniec náhľadu článku...
Pokračuj ďalej
Minul si až sem a to je super! Veríme, že ti prvé lekcie ukázali niečo nového a užitočného.
Chceš v kurze pokračovať? Prejdi do prémiové sekcie.
Obmedzená ponuka: Nauč sa všetko a ušetri
Obsah článku spadá pod licenciu Premium, kúpou článku súhlasíš so zmluvnými podmienkami.
- Neobmedzený a trvalý prístup k jednotlivým lekciím.
- Kvalitné znalosti v oblasti IT.
- Zručnosti, ktoré ti pomôžu získať vysnívanú a dobre platenú prácu.
Popis článku
Požadovaný článok má nasledujúci obsah:
Podrobne si vysvetlíme mezivláknovou komunikáciu s použitím metód wait, notify a notifyAll. Na príkladoch si ukážeme aj situácie deadlock a spurious Wakeup.
Kredity získaš, keď podporíš našu sieť. To môžeš urobiť buď zaslaním symbolickej sumy na podporu prevádzky alebo pridaním obsahu na sieť.