Anbefalt, 2024

Redaksjonens

Forskjellen mellom søvn () og vent () Metode i Java

Metoden søvn og vente lyder som å gjøre samme oppgave, men de er mye forskjellige fra hverandre. Søvnmetode tilhører tråkklassen, og ventemetoden tilhører objektklassen. Den viktigste forskjellen som skiller dem begge er, sovemetoden holder låsen på objektet til den blir avbrutt, eller den fullfører sin utførelse. På den annen side slipper ventemetoden låsen på objektet for å la de andre gjenstandene utføres til, gjenopptas av meldingsmetoden. Det er noen flere forskjeller mellom søvn og ventemetode; Du kan utforske dem i sammenligningskjemaet som vises nedenfor.

Sammenligningstabel

Grunnlag for sammenligningsovevente
grunn~~POS=TRUNCSovemåte frigjør ikke låsen på en gjenstand før den er avbrutt.Ventemetoden frigir låsen på objektet for å la andre gjenstander utføre til å varsle eller varsle. Alle metoder påberopes.
KlasseSøvnmetode er definert i Thread-klassen.Ventemetode er definert i Objeklassen.
synkronisertSøvnmetode trenger ikke å bli kalt innen Synkronisert kontekst.Ventemetode må ringes i den synkroniserte konteksten.
GjennomføringGjennomføring av søvnmetoden er fullført når en tråd forstyrrer den, eller når søvnmetoden er utløpt.Ventetiden kjøringen er fullført når melding () eller notifyAll () -metoden avbryter den.
statiskSøvnmetode er en statisk metode.Ventemetoden er ikke statisk, derfor har det behov for gjenstand for å påkalle det.
HenrettelseSøvnmetoden utføres på gjeldende tråd.Ventemetoden utføres på objektet.
UnntakInterruptedExceptionIllegalArgumentException, IllegalMonitorStateException, InterruptedException.

Definisjon av sovemetode

Søvnmetoden er den statiske metoden til tråden . Søvemetoden er påkalt når en tråd ikke vil utføre noen oppgaver i en viss tid. Søvnmetoden fullfører gjennomføringen enten når tidspunktet for metoden er utløpt, eller det avbrytes av en annen tråd i utførelsen. Etter at søvemetoden er fullført, får tråden sin runnable status igjen. Det er to fra sovemetoden som vist nedenfor.

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

I de ovennevnte to skjemaene kan du observere at tid er nevnt i både form for søvnmåte. Dette skyldes at en tråd alltid sover for en bestemt tid nevnt i parameteren. Søvnmetoden kan avbrytes av en hvilken som helst annen tråd under utførelsen; Derfor kan det kaste AvbruddExecption. Du må passe på at unntaket håndteres enten ved å prøve / fange blokk eller ved å kaste søkeord ellers, vil det føre til kompileringstidsfeil. Søvemetoden holder låsen på det nåværende objektet i kjøringen, og tillater ikke at noe annet objekt utføres før det fullføres gjennomføringen.

Definisjon av ventemetode

Vent er metoden som er definert i Objeklassen . Ventemetoden brukes når flere oppgaver (tråder) sliter for samme ressurs en om gangen. Ventemetoden når den påkrevd, frigir låsen på objektet som har påkalt ventemetoden. Og gi en sjanse til et annet objekt å bli henrettet til en varslingsmetode er påkalt som videre gjenopptar låsen på objektet utgitt av ventemetoden. Ventemetoden har følgende skjema.

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

Som i de ovennevnte tre formene av ventemetoden, har den første metoden ingen tidsparameter. Det betyr at utførelsen av ventemetoden vil fortsette til å varsle, eller notifyAll metode ikke påberopes. De to andre metodene har tidsparametere. Så de vil utføre til tiden utløper eller til å varsle eller noitfyAll metode er påkalt tidligere enn tiden utløper. Ventetiden kan kaste unntak. IllegalArgumentException, hvis tidsargumentet er negativt. IllegalMonitorStateException, hvis den gjeldende tråden ikke bruker ressursen. AvbruddEksept, hvis ventemetoden er avbrutt.

Viktige forskjeller mellom søvn og ventemetode i Java

  1. Hovedpunktet som skiller mellom søvn og ventemetoden er at søvnmetoden holder låsen på objektet til den blir avbrutt eller tiden går ut. Ventemetoden frigir imidlertid låsen på objektet som påkaller det og gir andre gjenstander muligheten til å utføre.
  2. Søvnmetoden er definert i tråkklassen, mens ventemetoden er definert i Objeklassen .
  3. Søvnmetoden trenger ikke å bli kalt fra synkronisert kontekst. Men ventemetoden må ringes fra synkronisert.
  4. Søvnmetoden vekes opp dersom metoden er utløpt eller den avbrytes av den andre tråden. Ventetiden er vekket
    når underretningen eller varslingen All metode påberopes.
  5. Søvnmetoden er statisk metode, mens ventemetoden ikke er en statisk metode.
  6. Søvnmetoden utføres på gjeldende tråd mens ventemetoden utføres på objektet som påkaller det.
  7. Unntaket kastet av søvnmetoden er AvbruddException, mens unntakene som tilbys av ventemetoden, er IllegalArgumentException, IllegalMonitorStateException, InterruptedException .

Konklusjon:

Når flere tråder ønsker å bruke samme ressurs en etter en, må ventemetoden brukes. Når en tråd ikke vil utføre noen oppgave, må søvnmetoden brukes.

Top