Forskellen Mellem Søvn Og Ventetid I Java

Indholdsfortegnelse:

Forskellen Mellem Søvn Og Ventetid I Java
Forskellen Mellem Søvn Og Ventetid I Java

Video: Forskellen Mellem Søvn Og Ventetid I Java

Video: Forskellen Mellem Søvn Og Ventetid I Java
Video: Урок Java 224: JAXB 2024, Kan
Anonim

Nøgleforskel - sleep vs wait i Java

Sleep and wait er to metoder, der bruges til multithreading i Java. Sleep-metoden tilhører trådklassen, mens ventemetoden er fra Object-klassen. Hovedforskellen mellem søvn og ventetid i Java er, at søvn bruges til at suspendere udførelsen af den aktuelle tråd i det angivne antal millisekunder, mens ventemetoden bruges til at få den aktuelle tråd til at vente, indtil en anden tråd påkalder meddelelsen eller notifyAll metode til objektet.

En tråd er den mindste enhed til behandling i operativsystemet. Det er en enkelt sekventiel strøm af kontrol inden for et program. Trådene er lette. Multithreading er mekanismen til at køre flere tråde på samme tid. Programmeringssprog som Java understøtter multithreading. Multithreading har fordele, fordi det giver mulighed for at køre flere tråde samtidigt, og trådene er uafhængige af hinanden. Der er metoder i Java, der kan bruges til multithreading. To af dem sover og venter.

INDHOLD

1. Oversigt og nøgleforskel

2. Hvad er søvn i Java

3. Hvad er ventetid i Java

4. Ligheder mellem søvn og ventetid i Java

5. Sammenligning side om side - søvn versus ventetid i Java i tabelform

6. Oversigt

Hvad er søvn i Java?

Der kører flere processer i et operativsystem. En proces er et program i udførelse. Hver proces kan have flere tråde, og der sker en kontekstskift mellem disse tråde. I Java er der to måder at oprette en tråd på. Det er ved at udvide trådklassen eller ved at implementere Runnable-interface. Trådklassen har konstruktører og metoder til at oprette og udføre operationer på en tråd. Trådklassen udvider objektklassen og implementerer Runnable-interface. Den Runnable-grænseflade skal implementeres af enhver klasse, hvis forekomster er beregnet til at blive udført af en tråd. Når tråden udføres, skrives den kode, der skal udføres, inden i køremetoden. Den tråd, der skal køres, vælges af trådplanlæggeren. Kun en tråd kører i en enkelt proces.

En tråd går gennem flere faser. Efter oprettelse af et objekt i trådklassen kan programmøren påberåbe sig startmetoden. Før tråden påberåbes siges at være i den nye tilstand. Trådplanlæggeren vælger en tråd, der skal køres. Hvis tråden endnu ikke er valgt af trådplanlæggeren, men hvis startmetoden påberåbes, er tråden i en kørbar tilstand. Når trådplanlæggeren har valgt den tråd, der skal udføres, overføres den til kørende tilstand. Hvis tråden er i live, men ikke i øjeblikket er kvalificeret til at køre, er den i tilstand, der ikke kan køres eller blokeres. Efter afslutningen af køremetoden går tråden til den afsluttede tilstand. Det er de vigtigste faser i trådens livscyklus.

Der er forskellige metoder tilgængelige i trådklassen til at udføre forskellige opgaver. Søvnmetoden bruges til at sove metoden i et bestemt tidsrum. Syntaksen for søvnmetoden er offentlig ugyldig søvn (lange millisekunder) kaster InterruptedException. Det får den aktuelt udførende tråd til at stoppe udførelsen midlertidigt i et specificeret antal millisekunder. Hvis en anden tråd afbryder den aktuelle tråd, slettes den afbrudte status for den aktuelle tråd, når denne undtagelse kastes.

Forskellen mellem søvn og ventetid i Java
Forskellen mellem søvn og ventetid i Java

Figur 01: Java-program med søvnmetode

I henhold til ovenstående program indeholder køremetoden kode, der skal udføres. I hovedprogrammet oprettes to objekter i ExampleThread1, og startmetoderne påberåbes på dem. Det giver mulighed for at køre koden inde i køremetoden. Kun en tråd udføres ad gangen. Med tråden. søvn (1000); tillader den første tråd at afslutte udførelsen i 1000 millisekunder. Når en tråd sover, opfanger trådplanlæggeren den anden tråd.

Hvad er ventetid i Java?

Flere tråde kan få adgang til en delt ressource. Det kan medføre, at der genereres en forkert output. Trådsynkronisering kan bruges til kun at lave en tråd for at få adgang til den delte ressource. Antag en situation som følger. Hvis der er to tråde som t1 og t2, begynder t1 at gemme værdier i en tekstfil kaldet Text1.txt. Disse værdier vil blive brugt til en anden beregning, når t1 vender tilbage. Hvis t2 starter, før t1 vender tilbage, kan t2 ændre de værdier, der er gemt med t1. Dette kan få t1 til at give en forkert output. Ved hjælp af synkronisering, når t1 begynder at bruge Text1.txt-filen, kan den fil låses, så den kun er tilgængelig med t1. T2 kan ikke ændre det, før t1 frigiver låsen for at få adgang til den tekstfil. Når opgaven er afsluttet, kan t1 frigøre låsen. Låsen er også kendt som monitoren.

Trådsynkronisering kan opnås ved kommunikation mellem tråde. Et kritisk afsnit er et kodesegment, der får adgang til de delte ressourcer. I kommunikationen mellem tråde er en tråd sat på pause i sin kritiske sektion, og en anden tråd får lov til at komme ind i den samme kritiske sektion, der skal udføres. Det implementeres ved hjælp af vent, underret og underret alle metoder. De tilhører objektklassen. Ventemetoden bruges til at tillade den aktuelle tråd at frigøre låsen og vente, indtil en anden tråd påkalder notify or notifyAll-metoden til objektet. Meddelelsesmetoden bruges til at vække en enkelt tråd, der venter på låsen. NotifyAll vækker alle tråde, der venter på låsen.

Forskellen mellem søvn og ventetid i Java Figur 02
Forskellen mellem søvn og ventetid i Java Figur 02

Figur 02: Lommeregnerklasse

Hovedforskel mellem søvn og ventetid i Java
Hovedforskel mellem søvn og ventetid i Java

Figur 03: Hovedmetode

Lommeregnerklassen udvider tråden. Den synkroniserede blok er inde i køremetoden. Metoden for loop og notify er inde i den synkroniserede blok. Inde i hovedmetoden kaldes en forekomst af en tråd, der er oprettet, og startmetoden på den forekomst. Hovedmetoden venter til tråden giver en meddelelse. Når programmet udføres, venter hovedmetoden indtil hele kørslen af køremetoden og venter på meddelelsesmetoden. Når meddelelsesmetoden er kaldt, stopper hovedmetoden med at vente og begynder at udføre resten af koden. Main venter, indtil lommeregneren er afsluttet. Endelig udskrives resultatet af summen.

Hvis der ikke er nogen synkroniseret blok, og hvis hovedmetoden har en kode som nedenfor, vil den give output som nul, fordi det ikke venter på, at den anden tråd skal fuldføres.

Lommeregner t1 = ny lommeregner ();

t1. Start ();

System.out.println (t1.sum);

Hvad er ligheden mellem søvn og ventetid i Java?

Både søvn og ventetid er metoder, der kan bruges ved implementering af multithreading i Java

Hvad er forskellen mellem søvn og ventetid i Java?

Diff artikel midt foran bordet

sove mod vent i Java

Sleep-metoden får den aktuelle tråd til at suspendere udførelsen i det angivne antal millisekunder, afhængigt af nøjagtigheden og nøjagtigheden af systemtimere og planlægningsprogrammer. Ventemetoden får den aktuelle tråd til at vente, indtil en anden tråd påkalder metoden notify or notifyAll for objektet.
Associering med lås
Dvalemetoden frigør ikke låsen på et objekt under synkronisering. Ventemetoden frigiver låsen under synkronisering.
Metode til udførelse
Sleep-metoden udføres på den aktuelle tråd. Ventemetoden kaldes på objektet.
Tilknyttet klasse
Søvn er en metode til trådklasse. Ventetiden er en metode af objektklasse.
Færdiggørelse
Søvnprocessen er afsluttet, når den specificerede tid er overstået. Ventemetoden afbrydes ved at kalde notify or notifyAll metoder.

Resumé - Sleep vs Vent i Java

Der kører flere processer på operativsystemet. Hver proces kan have flere tråde. En tråd er den mindste enhed til behandling i et operativsystem. Java-programmeringssprog understøtter multithreading. Det giver mulighed for at køre flere tråde samtidigt. Sleep and wait er to metoder, der kan bruges, når du implementerer multi-threading. Forskellen mellem søvn og ventetid i Java er, at søvn bruges til at suspendere udførelsen af den aktuelle tråd i det angivne antal millisekunder, mens ventemetoden bruges til at få den aktuelle tråd til at vente, indtil en anden tråd påkalder notify eller notifyAll metode til objektet.

Anbefalet: