Spánek a čekání jsou dvě metody používané pro multithreading v Javě. Metoda spánku patří do třídy Thread, zatímco metoda wait je ze třídy Object. klíčový rozdíl mezi spánkem a čekáním v Javě je to režim spánku se používá k pozastavení provádění aktuálního vlákna pro zadaný počet milisekund, zatímco metoda čekání slouží k tomu, aby aktuální vlákno čekalo, dokud jiné vlákno nevyvolá metodu oznámení nebo oznámeníVšechny pro objekt.
Vlákno je nejmenší jednotka zpracování v operačním systému. Je to jediný sekvenční tok řízení v rámci programu. Nitě jsou lehké. Vícevláknové zpracování je mechanismus běhu více vláken současně. Programovací jazyky, jako je Java, podporuje multithreading. Vícevláknové zpracování má výhody, protože umožňuje provozovat více vláken současně a vlákna jsou na sobě nezávislá. V Javě jsou metody, které lze použít pro multithreading. Dva z nich spí a čekají.
1. Přehled a klíčový rozdíl
2. Co je to spánek v Javě
3. Co čeká v Javě
4. Podobnosti Mezi spánkem a čekáním v Javě
5. Porovnání bok po boku - spánek vs. čekání v Javě v tabulkové formě
6. Shrnutí
V operačním systému běží více procesů. Proces je prováděný program. Každý proces může mít více vláken a mezi těmito vlákny dochází k přepínání kontextu. V Javě existují dva způsoby, jak vytvořit vlákno. To je rozšířením třídy vlákna nebo implementací rozhraní Runnable. Třída vlákna má konstruktory a metody pro vytváření a provádění operací na podprocesu. Třída vlákna rozšiřuje třídu Object a implementuje rozhraní Runnable. Rozhraní Runnable by mělo být implementováno jakoukoli třídou, jejíž instance jsou určeny k provedení podprocesem. Při provádění podprocesu je kód, který má být spuštěn, zapsán uvnitř metody run. Vlákno, které má být spuštěno, je vybráno plánovačem vlákna. V jednom procesu běží pouze jedno vlákno.
Vlákno prochází několika fázemi. Po vytvoření objektu třídy vlákna může programátor vyvolat metodu start. Před vyvoláním této metody se říká, že vlákno je v novém stavu. Plánovač vlákna vybere vlákno, které se má spustit. Pokud podproces ještě není vybrán plánovačem podprocesu, ale je-li vyvolána metoda startu, je podproces ve stavu, který lze spustit. Poté, co plánovač vlákna vybere vlákno, které se má provést, přejde do provozního stavu. Pokud je vlákno naživu, ale v současné době není způsobilé ke spuštění, je ve stavu bez běhu nebo blokovaném. Po dokončení metody run přejde vlákno do ukončeného stavu. To jsou hlavní fáze životního cyklu vlákna.
Ve třídě podprocesů jsou k dispozici různé metody provádění různých úkolů. Spánková metoda se používá ke spaní této metody po určitou dobu. Syntaxe metody spánku je veřejný neplatný spánek (dlouhé milisekundy) vyvolá InterruptedException. Způsobí, že aktuálně provádějící vlákno zastaví provádění dočasně po zadaný počet milisekund. Pokud další vlákno přeruší aktuální vlákno, stav přerušeného aktuálního vlákna se vyhodí, když se vyvolá tato výjimka.
Obrázek 01: Program Java se spánkovou metodou
Podle výše uvedeného programu obsahuje metoda run kód, který by měl být proveden. V hlavním programu jsou vytvořeny dva objekty ExampleThread1 a jsou na ně vyvolány metody start. To umožní spustit kód uvnitř metody run. Najednou se provede pouze jedno vlákno. Se závitem. spánek (1000); umožní první vlákno ukončit provádění po dobu 1000 milisekund. Když podproces spí, plánovač podprocesů zachytí druhé vlákno.
Ke sdílenému prostředku může přistupovat více vláken. To může způsobit generování nesprávného výstupu. Synchronizaci vláken lze použít k vytvoření pouze jednoho vlákna pro přístup ke sdílenému prostředku. Předpokládejte situaci následovně. Pokud existují dva vlákna jako t1 a t2, t1 začne ukládat hodnoty do textového souboru s názvem Text1.txt. Tyto hodnoty budou použity pro některé další výpočty, když se vrátí t1. Pokud t2 začíná před návratem t1, t2 může změnit hodnoty uložené pomocí t1. To může způsobit, že t1 poskytne nesprávný výstup. S pomocí synchronizace, když t1 začne používat soubor Text1.txt, může být tento soubor uzamčen, takže je přístupný pouze pomocí t1. T2 jej nemůže změnit, dokud t1 neuvolní zámek pro přístup k textovému souboru. Po dokončení úlohy může t1 uvolnit zámek. Zámek je také známý jako monitor.
Synchronizaci vláken lze dosáhnout pomocí komunikace mezi vlákny. Kritickou částí je segment kódu, který přistupuje ke sdíleným prostředkům. V komunikaci mezi vlákny je vlákno pozastaveno ve své kritické sekci a další vlákno může vstoupit do stejné kritické sekce, která má být provedena. Je implementován pomocí metod čekání, oznámení a oznámení. Patří do třídy Object. Metoda wait se používá k povolení aktuálního vlákna k uvolnění zámku a čekání, než jiné vlákno vyvolá metodu oznamování nebo upozorněníVšechny pro objekt. Metoda oznamování se používá k probuzení jediného vlákna, které čeká na zámek. Notifikovat vše probudí všechna vlákna, která čekají na zámek.
Obrázek 02: Třída kalkulačky
Obrázek 03: Hlavní metoda
Třída Kalkulačka rozšiřuje vlákno. Synchronizovaný blok je uvnitř metody run. Metoda for smyčky a oznámení je uvnitř synchronizovaného bloku. Uvnitř hlavní metody se v této instanci vyvolá instance vlákna a metoda start. Hlavní metoda bude čekat, až vlákno vydá oznámení. Při provádění programu čeká hlavní metoda až do úplného provedení metody run a čeká na metodu oznamování. Jakmile je vyvolána metoda oznamování, hlavní metoda přestane čekat a začne provádět zbytek kódu. Main čeká na dokončení vlákna Kalkulačky. Nakonec se vytiskne výsledek součtu.
Pokud neexistuje synchronizovaný blok a pokud hlavní metoda má kód uvedený níže, dá výstup jako nulu, protože nečeká na dokončení druhého vlákna..
Kalkulačka t1 = nová kalkulačka ();
t1. Start ();
System.out.println (t1.sum);
spát vs čekat v Javě | |
Metoda spánku způsobí, že aktuální vlákno pozastaví provádění pro zadaný počet milisekund, s výhradou přesnosti a přesnosti systémových časovačů a plánovačů.. | Metoda wait způsobí, že aktuální vlákno čeká, dokud jiné vlákno nevyvolá metodu notifikace nebo notifikace. |
Přidružení k zámku | |
Metoda spánku neuvolní zámek na objektu během synchronizace. | Metoda čekání uvolní zámek během synchronizace. |
Způsob provedení | |
Metoda spánku se provádí na aktuálním vlákně. | Metoda čekání je vyvolána na objektu. |
Přidružená třída | |
Spánek je metoda třídy Thread. | Čekání je metoda třídy Object. |
Dokončení | |
Spánkový proces je dokončen po uplynutí zadaného času. | Metoda čekání je přerušena voláním metody upozornění nebo oznámení. |
V operačním systému běží více procesů. Každý proces může mít více vláken. Vlákno je nejmenší jednotka zpracování v operačním systému. Programovací jazyk Java podporuje multithreading. Umožňuje běh více vláken současně. Spánek a čekání jsou dvě metody, které lze použít při implementaci vícevláknového zpracování. Rozdíl mezi spánkem a čekáním v Javě je ten, že spánek se používá k pozastavení provádění aktuálního vlákna pro zadaný počet milisekund, zatímco metoda wait se používá k tomu, aby aktuální vlákno čekalo, dokud jiné vlákno nevyvolá oznámení nebo oznámení. metoda objektu.
1. „Komunikace mezi vlákny v Javě - Javatpoint.“. JavaTPoint. K dispozici zde
2. Inter Thread Komunikace v Java multithreadingu Základní Java výukový program Studytonight. K dispozici zde