Ajánlott, 2024

Szerkesztő Választása

Eltérés az alvó () és a várakozási () módszer között Java-ban

A módszer alvás és várakozás hangzik, mintha ugyanaz a feladat lenne, de nagyon különböznek egymástól. Az alvó mód a Thread osztályhoz tartozik, és a várakozási módszer az Objektum osztályhoz tartozik. A legfontosabb különbség, amely megkülönbözteti mindkettőt, az, hogy az alvó módszer a zárat tartja az objektumon, amíg meg nem szakad, vagy befejezi a végrehajtást. Másrészről a várakozási módszer kiadja az objektum zárját, hogy a többi objektum végrehajtható legyen, amíg az értesítési módszerrel folytatódik. Van még néhány különbség az alvás és a várakozás mód között; az alábbiakban bemutatott összehasonlítási táblázatban feltárhatja őket.

Összehasonlító táblázat

Az összehasonlítás alapjaalvásvárjon
AlapvetőAz alvó mód nem oldja meg az objektum zárolását, amíg meg nem szakad.A várakozási módszer a objektum zárolását engedélyezi, hogy a többi objektum végrehajtható legyen, amíg az értesítés vagy az értesítés minden módja meghívásra kerül.
OsztályAz alvó módszert a Téma osztály határozza meg.A várakozási módszer az Objektum osztályban van meghatározva.
szinkronizáltAz alvó módszert nem kell a szinkronizált környezetben hívni.A várakozási módot a Szinkronizált környezetben kell hívni.
befejezésAz alvó mód végrehajtása akkor fejeződik be, ha egy szál megszakítja, vagy lejárt az alvás módja.A várakozási mód végrehajtása befejeződik, ha az értesítési () vagy az értesítési () módszer () módszer megszakítja.
StatikusAz alvó módszer statikus módszer.A várakozási módszer nem statikus, ezért objektumra van szükség ahhoz, hogy felhívja azt.
VégrehajtásAz alvó módszert az aktuális szálon hajtjuk végre.A várakozási módot az objektumon hajtjuk végre.
KivételInterruptedExceptionIllegalArgumentException, IllegalMonitorStateException, InterruptedException.

Az alvó módszer meghatározása

Az alvó módszer a Thread osztály statikus módszere. Az alvó módszert akkor hívják meg, ha egy szál nem akar semmilyen feladatot végrehajtani egy bizonyos ideig. Az alvó módszer befejezi a végrehajtását, ha lejárt a módszer ideje, vagy megszakítja a végrehajtás más szálai. Miután befejezte az alvó módszert, a szál újra megnyerte a futó állapotát. Az alvó módszertól két az alább látható.

 nyilvános statikus natív üreges alvás (hosszú milliszekundum); nyilvános statikus ürítés alvás (hosszú milliszekundum és int nanoszekundum); 

A fenti két formában megfigyelhetjük, hogy az időt mind az alvási módszer, mind a formában említik. Ez azért van, mert a szál mindig egy adott időpontban alszik a paraméterben. Az alvó módszert bármely más szál megszakíthatja a végrehajtás során; így meg tudja dobni a megszakított kivételt. Gondoskodnia kell arról, hogy a kivételt a próbálkozás / fogás blokkolással kezelje, vagy ha a kulcsszavakat másképp dobja, akkor a fordítási idő hiba lesz. Az alvó módszer az aktuális objektum zárolását tartja a végrehajtásban, és nem teszi lehetővé más objektumok végrehajtását, amíg befejezi a végrehajtást.

A várakozási módszer meghatározása

A várakozás az Objektum osztályban meghatározott módszer. A várakozási módot akkor használják, ha több feladat (szál) egyidejűleg küzd az azonos erőforrásért. A várakozási módszer, amikor meghívták, felszabadítja a várakozási módot meghívó objektum zárolását. És adjon esélyt arra, hogy egy másik objektumot végrehajtsanak, amíg egy értesítési módszert nem használnak, amely tovább folytatja a várakozási módszerrel kiadott objektum zárolását. A várakozási módszer a következő formában van.

 várjon(); várjon (hosszú milliszekundum); várjon (hosszú milliszekundum, int nanoszekundum); 

Ahogy a várakozási módszer fenti három formájánál, az első módszernek nincs időparamétere, ami azt jelenti, hogy a várakozási módszer végrehajtása addig folytatódik, amíg az értesítési vagy értesítési mód nem kerül alkalmazásra. A többi két módszer időparaméterekkel rendelkezik. Tehát addig fognak végrehajtani, amíg az idő lejár, vagy addig, amíg az értesítés vagy a noitfyAll módszer korábban lejár, mint az idő. A várakozási módszer kivételeket dobhat. IllegalArgumentException, ha az átadott idő argumentum negatív. IllegalMonitorStateException, ha az aktuális szál nem használja az erőforrást. Ha megszakad a várakozási módszer, akkor megszakadtElfogadás.

Az alvás és a várakozási módszer közötti különbségek Java-ban

  1. Az alvási és várakozási módot megkülönböztető fő pont az, hogy az alvás módja megtartja az objektum zárolását, amíg meg nem szakad vagy az idő lejár. A várakozási módszer azonban felszabadítja a rajta lévő objektum zárolását, és lehetőséget ad a többi objektum végrehajtására.
  2. Az alvó módszert a Thread osztályban határozzák meg, míg a várakozási módszer az Objektum osztályban van meghatározva.
  3. Az alvó módszert nem kell szinkronizált környezetből hívni. A várakozási módot azonban szinkronizálva kell hívni.
  4. Az alvás módja felébred, ha a módszer ideje lejár, vagy a másik szál megszakítja. A várakozási módszer felébred
    amikor az értesítési vagy értesítési módot használjuk.
  5. Az alvási módszer statikus módszer, míg a várakozási módszer nem statikus módszer.
  6. Az alvó módszert az aktuális szálon hajtjuk végre, míg a várakozási módot az objektumon hajtjuk végre, amelyik meghívja.
  7. Az alvó módszer által kivetett kivétel megszakadt, míg a thrwon kivételek kivételével az IllegalArgumentException, IllegalMonitorStateException, InterruptedException .

Következtetés:

Ha több szálat akar használni egyenként, akkor a várakozási módszert kell használni. Ha egy szál nem kíván semmilyen feladatot végrehajtani, akkor az alvó módszert kell használni.

Top