Forskjellen Mellom Søvn Og Vent I Java

Innholdsfortegnelse:

Forskjellen Mellom Søvn Og Vent I Java
Forskjellen Mellom Søvn Og Vent I Java
Anonim

Nøkkelforskjell - sove mot vent i Java

Sleep and wait er to metoder som brukes for multitrading i Java. Sovemetoden tilhører trådklassen mens ventemetoden er fra objektklassen. Hovedforskjellen mellom søvn og vent i Java er at søvnen brukes til å avbryte kjøringen av den gjeldende tråden i det angitte antall millisekunder mens ventemetoden brukes til å få den gjeldende tråden til å vente til en annen tråd påkaller varslingen eller notifyAll metode for objektet.

En tråd er den minste prosesseringsenheten i operativsystemet. Det er en enkelt sekvensiell strøm av kontroll i et program. Trådene er lette. Multithreading er mekanismen for å kjøre flere tråder samtidig. Programmeringsspråk som Java støtter multitrading. Multithreading har fordeler fordi det gjør det mulig å kjøre flere tråder samtidig, og trådene er uavhengige av hverandre. Det er metoder i Java som kan brukes til multitrading. To av dem sover og venter.

INNHOLD

1. Oversikt og nøkkelforskjell

2. Hva er søvn i Java

3. Hva er venting i Java

4. Likheter mellom søvn og ventetid i Java

5. Sammenligning side om side - søvn vs venting i Java i tabellform

6. Oppsummering

Hva er søvn i Java?

Det er flere prosesser som kjører i et operativsystem. En prosess er et program i utførelse. Hver prosess kan ha flere tråder, og det skjer en kontekstbytte mellom disse trådene. I Java er det to måter å lage en tråd på. Det er ved å utvide trådklassen eller ved å implementere Runnable-grensesnitt. Trådklassen har konstruktører og metoder for å lage og utføre operasjoner på en tråd. Trådklassen utvider objektklassen og implementerer Runnable-grensesnitt. Det kjørbare grensesnittet skal implementeres av en hvilken som helst klasse hvis forekomster er ment å utføres av en tråd. Når tråden kjøres, skrives koden som skal utføres i løpet av kjøremetoden. Tråden som skal kjøres er valgt av trådplanleggeren. Bare en tråd kjøres i en enkelt prosess.

En tråd går gjennom flere faser. Etter å ha opprettet et objekt i trådklassen, kan programmereren påberope seg startmetoden. Før man påkaller denne metoden, sies det at tråden er i den nye tilstanden. Trådplanleggeren velger en tråd som skal kjøres. Hvis tråden ikke er valgt av trådplanleggeren ennå, men hvis startmetoden påkalles, er tråden i en kjørbar tilstand. Etter at trådplanleggeren har valgt tråden som skal utføres, overføres den til kjørende tilstand. Hvis tråden er i live, men for øyeblikket ikke kvalifisert for å kjøre, er den i ikke-kjørbar eller blokkert tilstand. Etter at kjøremetoden er fullført, går tråden til avsluttet tilstand. Dette er hovedfasene i trådens livssyklus.

Det er forskjellige metoder tilgjengelig i trådklassen for å utføre forskjellige oppgaver. Søvnmetoden brukes til å sove metoden i en bestemt tidsperiode. Syntaksen for søvnmetoden er offentlig ugyldig søvn (lange millisekunder) kaster InterruptedException. Det fører til at den nåværende kjørende tråden stopper kjøringen midlertidig i et spesifisert antall millisekunder. Hvis en annen tråd avbryter den gjeldende tråden, blir den avbrutte statusen til den gjeldende tråden tømt når dette unntaket kastes.

Forskjellen mellom søvn og vent i Java
Forskjellen mellom søvn og vent i Java

Figur 01: Java-program med sovemetode

I henhold til det ovennevnte programmet inneholder kjøremetoden kode som skal utføres. I hovedprogrammet opprettes to objekter av ExampleThread1, og startmetodene påkalles på dem. Det vil tillate å kjøre koden i løpet av kjøremetoden. Bare én tråd utføres om gangen. Med tråden. søvn (1000); lar den første tråden avslutte utførelsen i 1000 millisekunder. Når en tråd sover, tar trådplanleggeren opp den andre tråden.

Hva er vent i Java?

Flere tråder kan få tilgang til en delt ressurs. Det kan føre til å generere feil utdata. Trådsynkronisering kan brukes til å lage bare en tråd for å få tilgang til den delte ressursen. Anta en situasjon som følger. Hvis det er to tråder som t1 og t2, begynner t1 å lagre verdier i en tekstfil kalt Text1.txt. Disse verdiene vil bli brukt til en annen beregning når t1 returnerer. Hvis t2 starter før t1 returnerer, kan t2 endre verdiene som er lagret av t1. Dette kan føre til at t1 gir feil utgang. Ved hjelp av synkronisering, når t1 begynner å bruke Text1.txt-filen, kan den filen låses, slik at den bare er tilgjengelig med t1. T2 kan ikke endre det før t1 frigjør låsen for å få tilgang til tekstfilen. Når oppgaven er fullført, kan t1 frigjøre låsen. Låsen er også kjent som skjermen.

Trådsynkronisering kan oppnås ved kommunikasjon mellom tråder. En kritisk seksjon er et kodesegment som får tilgang til de delte ressursene. I mellomtrådskommunikasjonen blir en tråd satt på pause i den kritiske delen, og en annen tråd får lov til å gå inn i den samme kritiske delen som skal utføres. Den implementeres ved hjelp av vent, varsle og varsle alle metoder. De tilhører Object-klassen. Ventemetoden brukes til å tillate at gjeldende tråd frigjør låsen og vente til en annen tråd påkaller notify or notifyAll-metoden for objektet. Varslingsmetoden brukes til å vekke en enkelt tråd som venter på låsen. NotifyAll vekker alle tråder som venter på låsen.

Forskjellen mellom søvn og vent i Java Figur 02
Forskjellen mellom søvn og vent i Java Figur 02

Figur 02: Kalkulatorklasse

Hovedforskjell mellom søvn og vent i Java
Hovedforskjell mellom søvn og vent i Java

Figur 03: Hovedmetode

Kalkulator-klassen utvider tråden. Den synkroniserte blokken er inne i kjøremetoden. Metoden for loop og notify er inne i den synkroniserte blokken. Inne i hovedmetoden kalles en forekomst av en tråd opprettet og startmetoden på den forekomsten. Hovedmetoden vil vente til tråden gir beskjed. Når programmet kjøres, venter hovedmetoden til hele kjøringen av kjøremetoden og venter på varslingsmetoden. Når varslingsmetoden er kalt, slutter hovedmetoden å vente og begynner å utføre resten av koden. Hoved venter til kalkulatortråden er fullført. Til slutt blir resultatet av summen skrevet ut.

Hvis det ikke er noen synkronisert blokk, og hvis hovedmetoden har en kode som nedenfor, vil den gi utgangen som null fordi den ikke venter på at den andre tråden skal fullføres.

Kalkulator t1 = ny Kalkulator ();

t1. start ();

System.out.println (t1.sum);

Hva er likheten mellom søvn og ventetid i Java?

Både søvn og venting er metoder som kan brukes når du implementerer flertråding i Java

Hva er forskjellen mellom søvn og vent i Java?

Diff Article Midt før tabell

sove mot vent i Java

Sovemetoden fører til at den gjeldende tråden avbryter kjøringen i det angitte antall millisekunder, avhengig av nøyaktigheten og nøyaktigheten til systemtimere og planleggere. Ventemetoden får den gjeldende tråden til å vente til en annen tråd påkaller notify or notifyAll-metoden for objektet.
Assosiasjon med Lock
Sovemetoden frigjør ikke låsen på et objekt under synkronisering. Ventemetoden frigjør låsen under synkronisering.
Metode for utførelse
Sovemetoden utføres på den gjeldende tråden. Ventemetoden kalles på objektet.
Tilknyttet klasse
Søvnen er en metode for trådklasse. Ventetiden er en metode for objektklasse.
Fullføring
Søvnprosessen er fullført etter at den angitte tiden er over. Ventemetoden blir avbrutt ved å ringe notify or notifyAll metoder.

Sammendrag - sove mot vent i Java

Det er flere prosesser som kjører på operativsystemet. Hver prosess kan ha flere tråder. En tråd er den minste prosesseringsenheten i et operativsystem. Java-programmeringsspråk støtter multitrading. Det gjør det mulig å kjøre flere tråder samtidig. Sleep and wait er to metoder som kan brukes når du implementerer multi-threading. Forskjellen mellom søvn og vent i Java er at søvnen brukes til å avbryte kjøringen av den gjeldende tråden i det angitte antall millisekunder mens ventemetoden brukes til å få den gjeldende tråden til å vente til en annen tråd påkaller varslingen eller varslingen metode for objektet.

Anbefalt: