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.
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.
02. ábra: Számológép osztály
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.