Forskellen mellem søvn og vent i Java

Indholdsfortegnelse:

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

Video: Forskellen mellem søvn og vent i Java

Video: Forskellen mellem søvn og vent i Java
Video: НАСТОЯЩАЯ ВЕДЬМА ЛЮДОЕД! Нашли ДЕРЕВНЮ ВЕДЬМ! Побег! 2024, November
Anonim

Nøgleforskel – søvn vs vente i Java

Søvn og vent er to metoder, der bruges til multithreading i Java. Søvnmetoden tilhører Thread-klassen, mens ventemetoden er fra Object-klassen. Den vigtigste forskel mellem dvale og vente i Java er, at dvale 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 kalder beskeden eller notifyAll metode for objektet.

En tråd er den mindste behandlingsenhed i operativsystemet. Det er en enkelt sekventiel kontrolstrøm i et program. Trådene er lette. Multithreading er mekanismen til at køre flere tråde på samme tid. Programmeringssprog så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.

Hvad er søvn i Java?

Der er flere processer, der kører i et operativsystem. En proces er et program under udførelse. Hver proces kan have flere tråde, og der sker et kontekstskifte 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. Thread-klassen har konstruktører og metoder til at oprette og udføre operationer på en tråd. Thread-klassen udvider Object-klassen og implementerer Runnable-grænsefladen. Den Runnable-grænseflade bør implementeres af enhver klasse, hvis instanser er beregnet til at blive udført af en tråd. Når tråden udføres, skrives koden, der skal udføres, inde i kørselsmetoden. Den tråd, der skal køre, vælges af trådplanlæggeren. Kun én tråd kører i en enkelt proces.

En tråd går gennem flere faser. Efter at have oprettet et objekt af Thread-klassen, kan programmøren påberåbe startmetoden. Før man påberåber sig denne metode, siges tråden 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åkaldes, er tråden i en kørebar tilstand. Når trådplanlæggeren har valgt den tråd, der skal udføres, skifter den til kørende tilstand. Hvis tråden er i live, men i øjeblikket ikke er kvalificeret til at køre, er den i ikke-kørbar eller blokeret tilstand. Efter afslutningen af kørselsmetoden går tråden til den afsluttede tilstand. Det er hovedfaserne 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 eksekverende tråd til at stoppe eksekveringen midlertidigt i et specificeret antal millisekunder. Hvis en anden tråd afbryder den aktuelle tråd, ryddes den afbrudte status for den aktuelle tråd, når denne undtagelse kastes.

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

Figur 01: Java-program med søvnmetode

I henhold til ovenstående program indeholder kørselsmetoden kode, der skal udføres. I hovedprogrammet oprettes to objekter i Eksempeltråd1, og startmetoderne påkaldes på dem. Det vil tillade at køre koden inde i kørselsmetoden. Kun én tråd køres ad gangen. Med tråden.søvn (1000); vil tillade den første tråd at afslutte udførelsen i 1000 millisekunder. Når en tråd sover, samler trådplanlæggeren den anden tråd op.

Hvad er wait i Java?

Flere tråde kan få adgang til en delt ressource. Det kan forårsage at generere et forkert output. Trådsynkronisering kan bruges til kun at lave én 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 værdierne gemt af t1. Dette kan få t1 til at give et forkert output. Ved hjælp af synkronisering, når t1 begynder at bruge filen Text1.txt, kan denne fil låses, så den kun er tilgængelig for t1. t2 kan ikke ændre det, før t1 slipper låsen for at få adgang til den tekstfil. Når opgaven er fuldført, kan t1 frigøre låsen. Låsen er også kendt som monitoren.

Trådsynkronisering kan opnås ved kommunikation mellem tråde. En kritisk sektion er et kodesegment, som får adgang til de delte ressourcer. I kommunikationen mellem tråde sættes en tråd på pause i dens kritiske sektion, og en anden tråd får lov til at komme ind i den samme kritiske sektion for at blive udført. Det er implementeret ved hjælp af vente, underrette og underrette alle metoder. De tilhører klassen Object. Vent-metoden bruges til at tillade den aktuelle tråd at frigive låsen og vente, indtil en anden tråd kalder notify eller notifyAll-metoden for 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 vent i Java_Figure 02
Forskellen mellem søvn og vent i Java_Figure 02

Figur 02: Lommeregnerklasse

Nøgleforskel mellem søvn og vent i Java
Nøgleforskel mellem søvn og vent i Java

Figur 03: Hovedmetode

Klassen Lommeregner udvider tråden. Den synkroniserede blok er inde i kørselsmetoden. Metoden for loop og notify er inde i den synkroniserede blok. Inde i hovedmetoden oprettes en instans af en tråd, og startmetoden kaldes på den instans. Hovedmetoden vil vente, indtil tråden giver en notifikation. Når programmet udføres, venter hovedmetoden til hele udførelsen af kørselsmetoden og venter på underretningsmetoden. Når notify-metoden er kaldt, holder hovedmetoden op med at vente og begynder at udføre resten af koden. Main venter, indtil Lommeregner-tråden er afsluttet. Til sidst 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 den ikke venter på, at den anden tråd er færdig.

Lommeregner t1=ny lommeregner ();

t1. start ();

System.out.println (t1.sum);

Hvad er ligheden mellem søvn og vent 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?

søvn vs vente i Java

Dvalemetoden får den aktuelle tråd til at suspendere eksekveringen i det angivne antal millisekunder, afhængigt af nøjagtigheden og nøjagtigheden af systemtimere og planlæggere. Ventmetoden får den aktuelle tråd til at vente, indtil en anden tråd kalder notify eller notifyAll-metoden for objektet.
Tilknytning til lås
Søvnmetoden frigiver ikke låsen på et objekt under synkronisering. Ventemetoden frigiver låsen under synkronisering.
Udførelsesmetode
Søvnmetoden udføres på den aktuelle tråd. Ventemetoden kaldes på objektet.
Associated Class
Søvnen er en metode til trådklasse. Venten er en metode i objektklassen.
Completion
Søvnprocessen er afsluttet, når den angivne tid er overstået. Ventemetoden afbrydes ved at ringe til notify eller notifyAll-metoden.

Oversigt – søvn vs vent i Java

Der kører flere processer på operativsystemet. Hver proces kan have flere tråde. En tråd er den mindste behandlingsenhed i et operativsystem. Java programmeringssprog understøtter multithreading. Det giver mulighed for at køre flere tråde samtidigt. Søvn og ventetid er to metoder, der kan bruges, når du implementerer multi-threading. Forskellen mellem dvale og vente i Java er, at dvale 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 kalder notify eller notifyAll metode til objektet.

Anbefalede: