Különbség Az Alvás és A Várakozás Között A Java-ban

Tartalomjegyzék:

Különbség Az Alvás és A Várakozás Között A Java-ban
Különbség Az Alvás és A Várakozás Között A Java-ban

Videó: Különbség Az Alvás és A Várakozás Között A Java-ban

Videó: Különbség Az Alvás és A Várakozás Között A Java-ban
Videó: Az alvás TITKAI és jótékony hatásai 2024, Lehet
Anonim

Kulcskülönbség - alvás és várakozás Java-ban

Az alvás és a várakozás két módszer a többszálas futtatásra a Java-ban. Az alvási módszer a Szál osztályba tartozik, míg a várakozási módszer az Object osztályba tartozik. A Java-ban az alvás és a várakozás közötti legfontosabb különbség az, hogy az alvó üzemmód az aktuális szál végrehajtásának felfüggesztésére szolgál a megadott számú ezredmásodpercig, míg a várakozási módszer arra használja, hogy az aktuális szál megvárja, amíg egy másik szál meghívja az értesítést vagy A metódus az objektumra.

A szál az operációs rendszer legkisebb feldolgozási egysége. Ez a programon belüli egyetlen vezérlési folyamat. A szálak könnyűek. A többszálas több szál egyidejű futtatásának mechanizmusa. A programozási nyelvek, például a Java, támogatják a többszálas szálat. A többszálas szálnak előnyei vannak, mivel lehetővé teszi több szál egyidejű futtatását, és a szálak függetlenek egymástól. Vannak olyan módszerek a Java-ban, amelyek felhasználhatók többszálas futtatásra. Közülük kettő alszik és vár.

TARTALOM

1. Áttekintés és a legfontosabb különbség

2. Mi az alvás a Java-ban

3. Mi az a várakozás a Java-ban?

4. Az alvás és a várakozás közötti hasonlóságok a Java-ban

5. Egymás melletti összehasonlítás - alvás és várakozás Java-ban táblázatos formában

6. Összefoglalás

Mi az alvás a Java-ban?

Az operációs rendszerben több folyamat fut. A folyamat egy végrehajtott program. Minden folyamatnak több szála lehet, és a szálak között kontextusváltás történik. A Java-ban kétféle módon lehet létrehozni egy szálat. Ez a szálosztály kibővítésével vagy a Runnable felület megvalósításával. A Thread osztály konstruktorokkal és módszerekkel rendelkezik a szálon végzett műveletek létrehozására és végrehajtására. A Thread osztály kiterjeszti az Object osztályt és megvalósítja a Runnable interfészt. A Runnable interfészt minden olyan osztálynak végre kell hajtania, amelynek példányait szálon kívánják végrehajtani. Amikor a szál végrehajtódik, a végrehajtandó kódot a futtatási módszer belsejébe írja. A futtatandó szálat a szálütemező választja ki. Csak egy szál fut egyetlen folyamatban.

Egy szál több fázison megy keresztül. A Thread osztályú objektum létrehozása után a programozó meghívhatja a start metódust. Mielőtt ezt a módszert meghívná, a szál új állapotban van. A szálütemező kiválaszt egy futtatni kívánt szálat. Ha a szálat még nem választotta ki a szál ütemezője, de ha a start metódust meghívja, akkor a szál futható állapotban van. Miután a szálütemező kiválasztotta a végrehajtandó szálat, futási állapotba kerül. Ha a szál él, de jelenleg nem alkalmas futtatásra, akkor nem futható vagy blokkolt állapotban van. A futtatási módszer befejezése után a szál befejezett állapotba kerül. Ezek a szál életciklusának fő szakaszai.

Különböző módszerek állnak rendelkezésre a szálosztályban a különböző feladatok végrehajtására. Az alvási módszert a módszer meghatározott ideig történő alvására használják. Az alvási módszer szintaxisa a nyilvános üreges alvás (hosszú ezredmásodpercek) az InterruptedException dobja. A jelenleg futó szál ideiglenesen leállítja a végrehajtást meghatározott számú milliszekundumig. Ha egy másik szál megszakítja az aktuális szálat, akkor az aktuális szál megszakított állapota törlődik, amikor ezt a kivételt eldobja.

Különbség az alvás és a várakozás között a Java-ban
Különbség az alvás és a várakozás között a Java-ban

01. ábra: Java program alvási módszerrel

A fenti program szerint a run metódus kódot tartalmaz, amelyet végre kell hajtani. A fő programban a ExampleThread1 két objektuma jön létre, és meghívja rajtuk a start metódusokat. Ez lehetővé teszi a kód futtatását a futtatási módszeren belül. Egyszerre csak egy szálat hajt végre. A Menettel. alvás (1000); az első szál 1000 milliszekundumig megszakítja a végrehajtást. Amikor egy szál alszik, a szálütemező felveszi a másik szálat.

Mi a várakozás a Java-ban?

Több szál is hozzáférhet egy megosztott erőforráshoz. Helytelen kimenetet generálhat. A szál szinkronizálásával csak egy szál készíthető a megosztott erőforrás eléréséhez. Tegyünk fel egy helyzetet az alábbiak szerint. Ha két szál van, mint t1 és t2, a t1 elkezd értékeket menteni a Text1.txt nevű szövegfájlba. Ezeket az értékeket valamilyen más számításhoz használjuk, amikor a t1 visszatér. Ha a t2 még a t1 visszatérése előtt indul, akkor a t2 megváltoztathatja a t1 által mentett értékeket. Ez a t1 hibás kimenetet eredményezhet. A szinkronizálás segítségével, amikor a t1 elkezdi használni a Text1.txt fájlt, ez a fájl zárolható, így csak t1 által érhető el. A t2 nem tudja megváltoztatni, amíg a t1 nem oldja fel a zárat a szövegfájl eléréséhez. A feladat befejezése után a t1 feloldhatja a zárat. A zárat monitornak is nevezik.

A szál szinkronizálása szálak közötti kommunikációval érhető el. A kritikus szakasz egy kódszegmens, amely hozzáfér a megosztott erőforrásokhoz. A szálak közötti kommunikációban egy szál szüneteltetve fut a kritikus szakaszában, és egy másik szál beléphet ugyanabba a kritikus szakaszba, amelyet végre kell hajtani. Várakozás, értesítés és értesítés minden módszerrel valósul meg. Az Object osztályba tartoznak. A várakozási módszer arra szolgál, hogy az aktuális szál felszabadítsa a zárat, és várjon, amíg egy másik szál meghívja az objektum értesítési vagy értesítési metódusát. Az értesítési módszer arra használható, hogy egyetlen szál felébredjen, amely a zárra vár. Az értesítés Minden felébreszti a záron várakozó összes szálat.

Az alvás és a várakozás közötti különbség a Java Figure 02-ben
Az alvás és a várakozás közötti különbség a Java Figure 02-ben

02. ábra: Számológép osztály

A legfontosabb különbség az alvás és a várakozás között a Java-ban
A legfontosabb különbség az alvás és a várakozás között a Java-ban

03. ábra: Fő módszer

A Számológép osztály kiterjeszti a szálat. A szinkronizált blokk a futtatási módszeren belül van. A for ciklus és értesítés módszer a szinkronizált blokkon belül található. A fő módszer belsejében egy létrehozott szál egy példánya és a start metódus meghívásra kerül. A fő módszer arra vár, amíg a szál értesítést nem ad. A program végrehajtásakor a fő metódus megvárja a futtatási módszer teljes végrehajtását, és várja az értesítési módszert. Az értesítési módszer meghívása után a fő módszer leáll, és megkezdi a kód többi részének végrehajtását. A Main várja a Számológép szál befejezését. Végül kinyomtatják az összeg eredményét.

Ha nincs szinkronizált blokk, és ha a fő metódusnak van egy kódja az alábbiak szerint, akkor a kimenetet nullának adja, mert nem várja meg a másik szál befejezését.

Számológép t1 = új Számológép ();

t1. Rajt ();

System.out.println (t1.sum);

Mi a hasonlóság az alvás és a várakozás között a Java-ban?

Az alvás és a várakozás egyaránt olyan módszerek, amelyek használhatók a többszálas szálak Java-ban történő megvalósításakor

Mi a különbség az alvás és a várakozás között a Java-ban?

Különböző cikk a táblázat előtt

alvás vs várakozás Java-ban

Az alvási módszer arra készteti az aktuális szálat, hogy a megadott számú milliszekundumig felfüggessze a végrehajtást, a rendszer időzítőinek és ütemezőinek pontosságától és pontosságától függően. A várakozási módszer arra készteti az aktuális szálat, hogy megvárja, amíg egy másik szál meghívja az objektum értesítési vagy értesítési metódusát.
Társulás Lockkal
Az alvási módszer nem oldja fel az objektum zárját a szinkronizálás során. A várakozási módszer feloldja a zárat a szinkronizálás során.
A végrehajtás módja
Az alvási mód az aktuális szálon kerül végrehajtásra. A várakozási mód meghívásra kerül az objektumon.
Társult osztály
Az alvás a Thread osztály egyik módszere. A várakozás az Object osztály metódusa.
Befejezés
Az alvási folyamat a megadott idő letelte után fejeződik be. A várakozási módot megszakítja az értesítés vagy az értesítés Minden módszer meghívása.

Összegzés - alvás vs várakozás Java-ban

Az operációs rendszeren több folyamat fut. Minden folyamatnak több szála lehet. A szál az operációs rendszer legkisebb feldolgozási egysége. A Java programozási nyelv támogatja a többszálas szálat. Több szál egyidejű futtatását teszi lehetővé. Az alvás és a várakozás két módszer használható a többszálas menetrend megvalósításakor. Az alvás és a várakozás közötti különbség a Java-ban az, hogy az alvás az aktuális szál végrehajtásának felfüggesztésére szolgál a megadott számú ezredmásodpercig, míg a várakozási módszer arra használja, hogy az aktuális szál megvárja, amíg egy másik szál meghívja az értesítést vagy az értesítést módszer az objektumhoz.

Ajánlott: