Anbefalet, 2021

Redaktørens Valg

Forskel Mellem søvn () og vent () Metode i Java

Metoden sover og venter lyder som at gøre den samme opgave, men de er meget forskellige fra hinanden. Søvnmetode tilhører tråkklassen, og ventemetoden tilhører objektklassen. Den vigtigste forskel, der adskiller dem begge er, at sovemetoden holder låsen på genstanden, indtil den afbrydes, eller den afslutter dens udførelse. På den anden side frigiver ventemetoden låsen på objektet for at lade de andre genstande udføres indtil genoptages af meddelelsesmetoden. Der er nogle flere forskelle mellem søvn og ventemetode; du kan udforske dem i sammenligningstabellen vist nedenfor.

Sammenligningstabel

Grundlag for sammenligningsøvnvente
GrundlæggendeSleep-metoden frigiver ikke låsen på et objekt, før den er afbrudt.Ventetilstand frigiver låsen på objektet for at lade andre genstande udføres, indtil de underretter eller notificerer. Alle metoder påberåbes.
klasseSleep metode er defineret i Thread klasse.Ventetid er defineret i objektklassen.
synkroniseretSøvnmetode behøver ikke at kaldes i Synkroniseret kontekst.Ventetilstand skal kaldes inden for den synkroniserede kontekst.
FærdiggørelseGennemførelse af søvnmetode er afsluttet, når en tråd afbryder den, eller når søvnmetoden er udløbet.Afvikling af ventetiden er afsluttet, når meddelelsen () eller notifyAll () afbryder den.
StatiskSøvnmetode er en statisk metode.Ventetilstanden er ikke statisk, hvorfor det har brug for objekt til at påberåbe sig det.
UdførelseSøvnmetoden udføres på den aktuelle tråd.Ventetiden udføres på objektet.
UndtagelseInterruptedExceptionIllegalArgumentException, IllegalMonitorStateException, InterruptedException.

Definition af sovemetode

Søvnmetoden er den statiske metode til trådklassen . Søvnmetoden påberåbes, når en tråd ikke vil udføre nogen opgave i et bestemt tidsrum. Søvnmetoden fuldender dens udførelse enten når tidspunktet for metoden er udløbet, eller det afbrydes af en anden tråd i udførelsen. Efter at søvnmetoden er afsluttet, får tråden igen sin løbende status. Der er to fra sovemetoden som vist nedenfor.

 offentlig statisk indfødt ugyldig søvn (lang millisekund); offentlig statisk ugyldig søvn (lange millisekunder og int nanosekund); 

I de ovennævnte to formularer kan du observere, at tid er nævnt i både form for søvnmåden. Dette skyldes, at en tråd altid sover for en bestemt tid nævnt i parameteren. Søvnmetoden kan afbrydes af enhver anden tråd under dens udførelse; Derfor kan det smide den afbrudte eksekvering. Du skal passe på, at undtagelsen håndteres enten ved prøve / catch-blok eller ved at smide søgeord ellers, vil det føre til kompileringstidsfejl. Søvnmetoden holder låsen på det aktuelle objekt i udførelsen og tillader ikke, at andre objekter udføres, før det afsluttes.

Definition af ventetilstand

Vent, er metoden defineret i objektklassen . Ventetiden bruges, når flere opgaver (tråde) kæmper for samme ressource en ad gangen. Ventetiden, når den påberåbes, frigiver låsen på objektet, der har påberåbt ventetiden. Og give en chance for, at et andet objekt bliver udført, indtil en meddelelsesmetode er påkaldt, som yderligere genoptager låsen på objektet udgivet af ventemetoden. Ventetiden har følgende formular.

 vente(); vent (lang millisekund); vent (lang millisekund, int nanosekund); 

Som i de ovennævnte tre former for ventetiden, har den første metode ingen tidsparameter. Det betyder, at udførelsen af ​​ventetiden vil fortsætte indtil meddelelsen, eller notifyAll metode ikke påberåbes. De øvrige to metoder har tidsparametre. Så de vil udføre indtil tidspunktet udløber eller indtil meddelelsen eller noitfyAll metode påberåbes tidligere end tidspunktet udløber. Ventetiden kan give undtagelser. UlovligArgumentException, hvis tidsargumentet er negativt. UlovligMonitorStateException, hvis den aktuelle tråd ikke bruger ressourcen. AfbrudtException, hvis ventemetoden afbrydes.

Nøgleforskelle mellem søvn og vent metode i Java

  1. Det vigtigste punkt, der skelner mellem søvn og ventemetoden, er, at søvnmetoden holder låsen på genstanden, indtil den er afbrudt eller dens tid udløber. Ventemetoden frigiver imidlertid låsen på objektet, der påkalder det og giver andre genstande chancen for at udføre.
  2. Søvnmetoden er defineret i Thread- klassen, mens ventemetoden er defineret i objektklassen .
  3. Søvnmetoden behøver ikke at blive kaldt fra synkroniseret kontekst. Men ventemetoden skal kaldes fra synkroniseret.
  4. Søvnmetoden vækkes, hvis metoden er udløbet, eller den afbrydes af den anden tråd. Ventetiden er vækket
    når meddelelsen eller meddelelsen All metode påberåbes.
  5. Søvnmetoden er statisk metode, mens ventetiden ikke er en statisk metode.
  6. Søvnmetoden udføres på den aktuelle tråd, mens ventemetoden udføres på objektet, der påberåber det.
  7. Undtagelsen kastet ved søvnmåde er AfbrudtException, mens undtagelserne thrwon ved ventemetode er IllegalArgumentException, IllegalMonitorStateException, InterruptedException .

Konklusion:

Når flere tråde ønsker at bruge samme ressource en ad gangen, så skal ventemetoden bruges. Når en tråd ikke vil udføre nogen opgave, skal søvnmetode bruges.

Top