Lekce 4 - Multithreading v Javě - Mezivláknová komunikace
V předchozím kvízu, Kvíz - Tvorba vícevláknových aplikací a synchronizace v Javě, jsme si ověřili nabyté zkušenosti z předchozích lekcí.
Dnes si ukážeme, že možnosti těchto monitorů rozhodně u synchronizace nekončí.
Mezivláknová komunikace
Java nám nabízí tři metody související s mezivláknovou komunikací.
Jsou to metody wait(), notify() a
notifyAll(). S nimi jste se již jistojistě setkali, protože jsou
definovány třídou Object, a tudíž je každý objekt obsahuje.
Na první pohled to může vypadat trochu zmateně – proč jsou tyto metody
součástí každého objektu, proč je jednoduše nedefinuje třída
Thread? Jak lze takové metody využít? Možná jste si již
všimli, že používání monitorů rozdělí naše vlákna do skupin podle
monitorů, které používají. Vlákna v těchto skupinách se poté přes
sdílený monitor mohou navzájem ovlivňovat. A protože víme, že monitorem
může být jakýkoli objekt, bylo potřeba, aby každý objekt tyto
ovlivňovací metody obsahoval.
Abychom mohli tyto metody na monitoru úspěšně volat, je potřeba, abychom v danou chvíli tento monitor vlastnili (námi myslím naše vlákno). A kdy máme jistotu, že vlastníme monitor? No, v
...konec náhledu článku...
Pokračuj dál
Došel jsi až sem a to je super! Věříme, že ti první lekce ukázaly něco nového a užitečného.
Chceš v kurzu pokračovat? Přejdi do prémiové sekce.
Omezená nabídka: Nauč se vše a ušetři
Obsah článku spadá pod licenci Premium, koupí článku souhlasíš se smluvními podmínkami.
- Neomezený a trvalý přístup k jednotlivým lekcím.
- Kvalitní znalosti v oblasti IT.
- Dovednosti, které ti pomohou získat vysněnou a dobře placenou práci.
Popis článku
Požadovaný článek má následující obsah:
Podrobně si vysvětlíme mezivláknovou komunikaci s použitím metod wait, notify a notifyAll. Na příkladech si ukážeme i situace deadlock a spurious wakeup.
Kredity získáš, když podpoříš naši síť. To můžeš udělat buď zasláním symbolické částky na podporu provozu nebo přidáním obsahu na síť.