Skillnad Mellan Sömn Och Vänta I Java

Innehållsförteckning:

Skillnad Mellan Sömn Och Vänta I Java
Skillnad Mellan Sömn Och Vänta I Java

Video: Skillnad Mellan Sömn Och Vänta I Java

Video: Skillnad Mellan Sömn Och Vänta I Java
Video: Studie- och karriärvägledning för dig som är i slutet av utbildningen 2024, Maj
Anonim

Nyckelskillnad - sömn vs vänta i Java

Sömn och vänta är två metoder som används för multitrådning i Java. Sovmetoden tillhör trådklassen medan väntemetoden kommer från objektklassen. Huvudskillnaden mellan sömn och väntan i Java är att sömnen används för att avbryta körningen av den aktuella tråden under det angivna antalet millisekunder medan väntemetoden används för att få den aktuella tråden att vänta tills en annan tråd anropar meddelandet eller notifyAll metod för objektet.

En tråd är den minsta bearbetningsenheten i operativsystemet. Det är ett enda sekventiellt flöde av kontroll inom ett program. Trådarna är lätta. Multitrådning är mekanismen för att köra flera trådar samtidigt. Programmeringsspråk som Java stöder multithreading. Multitrådning har fördelar eftersom det gör det möjligt att köra flera trådar samtidigt och trådarna är oberoende av varandra. Det finns metoder i Java som kan användas för multitrådning. Två av dem sover och väntar.

INNEHÅLL

1. Översikt och nyckelskillnad

2. Vad är sömn i Java

3. Vad är vänta i Java

4. Likheter mellan sömn och vänta i Java

5. Jämförelse sida vid sida - sömn jämfört med vänta i Java i tabellform

6. Sammanfattning

Vad är sömn i Java?

Det finns flera processer som körs i ett operativsystem. En process är ett program som körs. Varje process kan ha flera trådar, och det finns en kontextväxling mellan dessa trådar. I Java finns det två sätt att skapa en tråd. Det är genom att utvidga trådklassen eller genom att implementera Runnable-gränssnitt. Trådklassen har konstruktörer och metoder för att skapa och utföra operationer på en tråd. Trådklassen utökar objektklassen och implementerar körbart gränssnitt. Det körbara gränssnittet ska implementeras av alla klasser vars instanser är avsedda att köras av en tråd. När tråden körs skrivs koden som ska köras in i körmetoden. Tråden som ska köras väljs av trådschemaläggaren. Endast en tråd körs i en enda process.

En tråd går igenom flera faser. Efter att ha skapat ett objekt av trådklassen kan programmeraren åberopa startmetoden. Innan man åberopar den metoden sägs tråden vara i det nya tillståndet. Trådschemaläggaren väljer en tråd som ska köras. Om tråden ännu inte har valts av trådschemaläggaren men om startmetoden åberopas är tråden i ett körbart tillstånd. När trådschemaläggaren har valt den tråd som ska köras övergår den till körläge. Om tråden är vid liv men för närvarande inte kan köras, är den i icke-körbar eller blockerad tillstånd. Efter att körmetoden har slutförts går tråden till det avslutade tillståndet. Det är de viktigaste faserna i trådens livscykel.

Det finns olika metoder tillgängliga i trådklassen för att utföra olika uppgifter. Sömnmetoden används för att sova metoden under en viss tid. Syntaxen för sömnmetoden är offentlig ogiltig sömn (långa millisekunder) kastar InterruptedException. Det gör att den för närvarande körande tråden stoppar körningen tillfälligt under ett angivet antal millisekunder. Om en annan tråd avbryter den aktuella tråden raderas den avbrutna statusen för den aktuella tråden när detta undantag kastas.

Skillnad mellan sömn och vänta i Java
Skillnad mellan sömn och vänta i Java

Figur 01: Java-program med sömnmetod

Enligt ovanstående program innehåller körmetoden kod som ska köras. I huvudprogrammet skapas två objekt i ExampleThread1 och startmetoderna åberopas på dem. Det gör det möjligt att köra koden i körmetoden. Endast en tråd körs i taget. Med tråden. sömn (1000); låter den första tråden avsluta körningen i 1000 millisekunder. När en tråd sover, tar trådschemaläggaren upp den andra tråden.

Vad är vänta i Java?

Flera trådar kan komma åt en delad resurs. Det kan orsaka att fel utdata genereras. Trådsynkronisering kan användas för att bara skapa en tråd för att komma åt den delade resursen. Antag en situation enligt följande. Om det finns två trådar som t1 och t2, börjar t1 spara värden i en textfil som heter Text1.txt. Dessa värden kommer att användas för någon annan beräkning när t1 returnerar. Om t2 startar innan t1 återvänder kan t2 ändra värdena som sparats av t1. Detta kan orsaka att t1 ger fel utdata. Med hjälp av synkronisering, när t1 börjar använda Text1.txt-filen, kan den filen låsas, så den är endast tillgänglig med t1. T2 kan inte ändra det förrän t1 släpper låset för att komma åt den textfilen. När uppgiften är klar kan t1 frigöra låset. Låset är också känt som monitorn.

Trådsynkronisering kan uppnås genom kommunikation mellan trådar. Ett kritiskt avsnitt är ett kodsegment som får åtkomst till de delade resurserna. I kommunikationen mellan trådarna pausas en tråd som körs i dess kritiska avsnitt, och en annan tråd får komma in i samma kritiska avsnitt som ska köras. Det implementeras med hjälp av vänta, meddela och meddela alla metoder. De tillhör Object-klassen. Vänta metoden används för att låta den aktuella tråden släppa låset och vänta tills en annan tråd åberopar notify eller notifyAll metoden för objektet. Meddelandemetoden används för att väcka en enda tråd som väntar på låset. NotifyAll väcker alla trådar som väntar på låset.

Skillnad mellan sömn och vänta i Java Figur 02
Skillnad mellan sömn och vänta i Java Figur 02

Figur 02: Miniräknarklass

Huvudskillnad mellan sömn och vänta i Java
Huvudskillnad mellan sömn och vänta i Java

Figur 03: Huvudmetod

Kalkylatorklassen utökar tråden. Det synkroniserade blocket finns i körmetoden. Metoden för loop och notify finns i det synkroniserade blocket. Inuti huvudmetoden anropas en instans av en tråd som skapats och startmetoden för den instansen. Huvudmetoden väntar tills tråden ger ett meddelande. När programmet körs väntar huvudmetoden tills hela körningsmetoden körs och väntar på meddelandemetoden. När aviseringsmetoden har anropats slutar huvudmetoden att vänta och börjar köra resten av koden. Main väntar tills kalkylatortråden är klar. Slutligen skrivs resultatet av summan ut.

Om det inte finns något synkroniserat block och om huvudmetoden har en kod enligt nedan, kommer den att ge utgången noll eftersom den inte väntar på att den andra tråden ska slutföras.

Kalkylator t1 = ny kalkylator ();

t1. Start ();

System.out.println (t1.sum);

Vad är likheten mellan sömn och vänta i Java?

Både sömn och väntan är metoder som kan användas vid implementering av multithreading i Java

Vad är skillnaden mellan sömn och vänta i Java?

Skilja artikeln mitt före bordet

sova mot vänta i Java

Sömnmetoden gör att den aktuella tråden avbryter körningen under det angivna antalet millisekunder, beroende på precisionen och noggrannheten för systemtimers och schemaläggare. Vänta metoden gör att den aktuella tråden väntar tills en annan tråd åberopar notify eller notifyAll metoden för objektet.
Associering med Lock
Sömnmetoden frigör inte låset på ett objekt under synkronisering. Väntemetoden släpper låset under synkronisering.
Metod för utförande
Sömnmetoden körs på den aktuella tråden. Väntemetoden kallas på objektet.
Associerad klass
Sömnen är en metod för trådklass. Väntetiden är en metod av objektklass.
Komplettering
Sömnprocessen är klar när den angivna tiden är över. Vänta metoden avbryts genom att anropa notify eller notifyAll metoder.

Sammanfattning - sömn mot vänta i Java

Det finns flera processer som körs på operativsystemet. Varje process kan ha flera trådar. En tråd är den minsta bearbetningsenheten i ett operativsystem. Java-programmeringsspråk stöder multithreading. Det gör att du kan köra flera trådar samtidigt. Sömn och väntan är två metoder som kan användas vid implementering av flera trådar. Skillnaden mellan sömn och väntan i Java är att sömnen används för att avbryta körningen av den aktuella tråden under det angivna antalet millisekunder medan väntemetoden används för att få den nuvarande tråden att vänta tills en annan tråd åberopar meddelandet eller meddelandet metod för objektet.

Rekommenderas: