Rozdiel medzi spánkom a čakaním v Jave

Kľúčový rozdiel - spánok vs čakať Jáva
 

Spánok a čakanie sú dve metódy používané na multithreading v Jave. Metóda spánku patrí do triedy vlákien, zatiaľ čo metóda čakania je z triedy objektov. kľúčový rozdiel medzi spánkom a čakaním v Jave je to spánok sa používa na pozastavenie vykonávania aktuálneho vlákna po zadaný počet milisekúnd, zatiaľ čo metóda wait sa používa na spôsobenie, že aktuálne vlákno čaká, kým iné vlákno nevyvolá metódu upozornenia alebo oznámeniaVšetky metódy pre objekt..

Vlákno je najmenšia jednotka spracovania v operačnom systéme. Je to jediný postupný tok riadenia v rámci programu. Nite sú ľahké. Multithreading je mechanizmus fungovania viacerých vlákien súčasne. Programovacie jazyky, ako je Java, podporujú multithreading. Viacvláknové spracovanie vlákien má výhody, pretože umožňuje spustenie viacerých vlákien súčasne a vlákna sú na sebe nezávislé. V Jave sú metódy, ktoré sa dajú použiť na multithreading. Dvaja z nich spia a čakajú.

OBSAH

1. Prehľad a kľúčový rozdiel
2. Čo je spánok v Jave
3. Čo čaká v Jave
4. Podobnosti Medzi spánkom a čakaním v Jave
5. Porovnanie bok po boku - spánok vs čakanie v Jave v tabuľkovej forme
6. Zhrnutie

Čo je spánok v Jave?

V operačnom systéme beží viac procesov. Proces je vykonávaný program. Každý proces môže mať viac vlákien a medzi týmito vláknami dochádza k prepínaniu kontextu. V Jave existujú dva spôsoby, ako vytvoriť vlákno. To je rozšírením triedy vlákna alebo implementáciou rozhrania Runnable. Trieda vlákien má konštruktory a metódy na vytváranie a vykonávanie operácií na vlákne. Trieda vlákien rozširuje triedu objektov a implementuje spustiteľné rozhranie. Rozhranie Runnable by malo byť implementované akoukoľvek triedou, ktorej inštancie sú určené na vykonanie pomocou vlákna. Po vykonaní vlákna sa kód, ktorý sa má vykonať, zapíše do metódy run. Vlákno, ktoré by sa malo spustiť, je vybrané plánovačom vlákien. V jednom procese beží iba jedno vlákno.

Niť prechádza niekoľkými fázami. Po vytvorení objektu triedy vlákna môže programátor vyvolať metódu štart. Pred vyvolaním tejto metódy sa hovorí, že vlákno je v novom stave. Plánovač vlákna vyberie vlákno, ktoré sa má spustiť. Ak vlákno ešte nie je vybraté plánovačom vlákna, ale ak je vyvolaná metóda start, vlákno je v spustiteľnom stave. Keď plánovač vlákna vyberie vlákno, ktoré sa má vykonať, prejde do prevádzkového stavu. Ak je vlákno živé, ale momentálne ho nie je možné spustiť, je v nespustiteľnom alebo blokovanom stave. Po dokončení metódy run sa vlákno prepne do ukončeného stavu. Toto sú hlavné fázy životného cyklu vlákna.

V triede vlákien sú k dispozícii rôzne metódy na vykonávanie rôznych úloh. Spánková metóda sa používa na spánok tejto metódy po určitú dobu. Syntax pre spánkovú metódu je verejný prázdny spánok (dlhé milisekundy), ktorý vyvolá prerušenú výnimku. Spôsobí to, že aktuálne vykonávané vlákno zastaví dočasné vykonávanie po zadaný počet milisekúnd. Ak ďalšie vlákno preruší súčasné vlákno, stav prerušenia aktuálneho vlákna sa vyhodí, keď sa vyvolá táto výnimka.

Obrázok 01: Program Java so spánkovou metódou

Podľa vyššie uvedeného programu obsahuje metóda run kód, ktorý by sa mal vykonať. V hlavnom programe sa vytvoria dva objekty objektu ExampleThread1 a vyvolajú sa na nich metódy štartu. To umožní spustiť kód vo vnútri metódy run. Naraz sa vykoná iba jedno vlákno. S niťou. spánok (1000); umožní prvému vláknu ukončiť vykonávanie po dobu 1 000 milisekúnd. Keď vlákno spí, plánovač vlákien zdvihne druhé vlákno.

Čo čaká v Jave?

Prístup k zdieľanému prostriedku môže mať viacero vlákien. Môže to spôsobiť generovanie nesprávneho výstupu. Synchronizáciu vlákien môžete použiť na vytvorenie iba jedného vlákna na prístup k zdieľanému prostriedku. Predpokladajme nasledujúcu situáciu. Ak existujú dva vlákna ako t1 a t2, t1 začne ukladať hodnoty do textového súboru s názvom Text1.txt. Keď sa t1 vráti, tieto hodnoty sa použijú na iný výpočet. Ak sa t2 spustí pred návratom t1, t2 môže zmeniť hodnoty uložené pomocou t1. To môže spôsobiť, že t1 poskytne nesprávny výstup. Pomocou synchronizácie, keď t1 začne používať súbor Text1.txt, môže byť tento súbor uzamknutý, takže je prístupný iba pomocou t1. T2 ho nemôže zmeniť, kým t1 neuvoľní zámok pre prístup k tomuto textovému súboru. Po dokončení úlohy môže t1 uvoľniť zámok. Zámok je známy aj ako monitor.

Synchronizáciu vlákien možno dosiahnuť komunikáciou medzi vláknami. Kritická časť je segment kódu, ktorý pristupuje k zdieľaným zdrojom. Pri komunikácii medzi vláknami je vlákno pozastavené v jeho kritickej sekcii a do tej istej kritickej sekcie, ktorá sa má vykonať, môže vstúpiť ďalšie vlákno. Realizuje sa pomocou metód počkania, oznámenia a oznámenia. Patria do triedy Object. Metóda wait sa používa na povolenie aktuálneho vlákna na uvoľnenie zámku a na čakanie, kým iné vlákno vyvolá metódu oznamovania alebo oznámeniaVšetky vlákno pre objekt. Metóda notifikácie sa používa na prebudenie jedného vlákna, ktoré čaká na zámok. OboznámenieVšetko prebudí všetky vlákna, ktoré čakajú na zámok.

Obrázok 02: Kalkulačka Trieda

Obrázok 03: Hlavná metóda

Trieda Kalkulačka rozširuje vlákno. Synchronizovaný blok je vo vnútri metódy run. Metóda for loop and notification je vo vnútri synchronizovaného bloku. Vo vnútri hlavnej metódy sa v tejto inštancii vyvolá inštancia vlákna a metóda štartu. Hlavná metóda bude čakať, kým vlákno vydá oznámenie. Pri vykonávaní programu čaká hlavná metóda na celé vykonanie metódy run a čaká na metódu notifikácie. Po vyvolaní metódy oznamovania hlavná metóda prestane čakať a začne vykonávať zvyšok kódu. Main čaká na dokončenie vlákna Kalkulačky. Nakoniec sa vytlačí výsledok súčtu.

Ak neexistuje synchronizovaný blok a ak má hlavná metóda kód uvedený nižšie, dá výstup ako nula, pretože nečaká na dokončenie druhého vlákna..

Kalkulačka t1 = nová kalkulačka ();

 t1. start ();

System.out.println (t1.sum);

Aká je podobnosť medzi spánkom a čakaním v Jave?

  • Spánok aj čakanie sú metódy, ktoré sa môžu použiť pri implementácii multithreadingu v Jave

Aký je rozdiel medzi spánkom a čakaním v Jave?

spať vs čakať v Jave

Metóda spánku spôsobí, že aktuálne vlákno pozastaví vykonávanie pre zadaný počet milisekúnd, s výhradou presnosti a presnosti systémových časovačov a plánovačov.. Metóda čakania spôsobí, že aktuálne vlákno čaká, kým iné vlákno nevyvolá metódu oznamovania alebo oznámeniaVšetky vlákno pre objekt.
 Pridruženie k zámku
Metóda spánku neuvoľní zámok na objekte počas synchronizácie. Metóda čakania uvoľní zámok počas synchronizácie.
Spôsob vykonania
Metóda spánku sa vykonáva na aktuálnom vlákne. Na objekt sa volá metóda wait.
 Priradená trieda
Spánok je metóda triedy Thread. Čakanie je metóda triedy Object.
absolvovaní
Spánok sa dokončí po uplynutí stanoveného času. Metóda čakania je prerušená volaním metód notifikácie alebo oznámeniaVšetky.

zhrnutie - spať vs čakať Jáva

V operačnom systéme bežia viaceré procesy. Každý proces môže mať viac vlákien. Vlákno je najmenšia jednotka spracovania v operačnom systéme. Programovací jazyk Java podporuje multithreading. Umožňuje beh viacerých vlákien súčasne. Spánok a čakanie sú dve metódy, ktoré sa dajú použiť pri implementácii viacerých vlákien. Rozdiel medzi spánkom a čakaním v Jave je ten, že spánok sa používa na pozastavenie vykonávania aktuálneho vlákna pre zadaný počet milisekúnd, zatiaľ čo metóda wait sa používa na spôsobenie, že aktuálne vlákno čaká, kým iné vlákno nevyvolá notifikáciu alebo oznámenie. metóda pre objekt.

referencie:

1. „Komunikácia medzi vláknami v Java - Javatpoint.“. JavaTPoint. K dispozícii tu
2. Inter Thread Komunikácia v Java multithreading Výukový program pre jadro Java Studytonight. K dispozícii tu