Pouze tento týden sleva až 80 % na e-learning týkající se PHP. A zároveň využij akce až 30 % zdarma při nákupu e-learningu. Více informací.
Hledáme asistenty pro kurzy programování - pohodová brigáda. Více info
PHP week

Lekce 4 - Multithreading v Javě - Mezivláknová komunikace

V minulé lekci, Multithreading v Javě - Synchronizace v praxi, jsme si poprvé v praxi vyzkoušeli synchronizaci vláken. Ta je realizována pomocí monitorů.

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

Znalosti v hodnotě stovek tisíc získáš za pár korun

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

Koupit lekce a funkce postupně a po jednom 100 bodů
Koupit všechny aktuálně dostupné lekce s funkcí odevzdávání úloh za exkluzivní cenu 85 bodů (212 Kč)
Na svém účtu máš aktuálně 0 bodů
Koupí tohoto výhodného balíčku získáš přístup ke všem 14 lekcím s kontrolou a certifikací a ještě navíc ušetříš 38 Kč. Nabídka je omezená pouze pro první lekce z kurzu a obsahuje exkluzivní slevu 15%.
85 bodů získáš za přidání svého článku na síť nebo odpovídá 250 Kč 212 Kč

Pozor, pokud si koupíš pouze tuto lekci, ztratíš nárok na speciální slevu 15% na balíček všech lekcí.

Koupit jen lekci 10 bodů
Na svém účtu máš aktuálně 0 bodů
10 bodů získáš za přidání svého článku na síť nebo odpovídá 25 Kč

Obsah článku spadá pod licenci Premium, koupí článku souhlasíš se smluvními podmínkami.

Co od nás v dalších lekcích dostaneš?
  • 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.

Body 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íť.

Článek pro vás napsal Matěj Kripner
Avatar
Student, programátor v CZ.NIC.
Aktivity