Sova och vänta är två metoder som används för multithreading i Java. Sömnmetoden hör till trådklassen medan väntelägen är från Objeklassen. De nyckelskillnad mellan sömn och vänta i Java är det, sömn används för att avbryta utförandet av den aktuella tråden i det angivna antalet millisekunder medan väntelägesmetoden används för att få den aktuella tråden att vänta tills en annan tråd åberopar anmälan eller meddelandetAlla metod för objektet.
En tråd är den minsta hanteringsenheten i operativsystemet. Det är ett enda sekventiellt flöde av kontroll inom ett program. Trådarna är lätta. Multithreading är mekanismen för att köra flera trådar samtidigt. Programmeringsspråk som Java stöder multithreading. Multithreading har fördelar eftersom det tillåter 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 multithreadning. Två av dem är sömn och vänta.
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 vid sida vid sida - sömn vs vänta i Java i tabellform
6. Sammanfattning
Det finns flera processer som körs i ett operativsystem. En process är ett program i körning. Varje process kan ha flera trådar, och det finns en kontextbyte mellan dessa trådar. I Java finns det två sätt att skapa en tråd. Det vill säga genom att förlänga trådklassen eller genom att implementera Runnable-gränssnittet. Thread-klassen har konstruktörer och metoder för att skapa och utföra operationer på en tråd. Gängklassen utökar Objeklass och implementerar Runnable-gränssnittet. Runnable-gränssnittet ska genomföras av vilken klass som helst som är avsedda att utföras av en tråd. När tråden exekveras skrivs koden som ska köras in i körmetoden. Gängan som ska köras väljs av trådschemaläggaren. Endast en tråd går i en enda process.
En tråd går igenom flera faser. Efter att ha skapat ett objekt av Thread-klassen kan programmeraren åberopa startmetoden. Innan man anropar den här metoden, sägs tråden vara i det nya tillståndet. Trådplaneraren väljer en tråd att köra. Om tråden ännu inte är vald av trådschemaläggaren, men om startmetoden är påkallad, är tråden i runnbar tillstånd. När trådschemaläggaren väljer tråden som ska utföras, övergår den till löpande tillstånd. Om tråden är levande men inte för närvarande berättigad att köra, är den i icke-runnbar eller blockerad stat. Efter avslutad körmetod går tråden till det avslutade tillståndet. Det är de viktigaste faser av 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 tomrumslösning (lång millisekunder) kastar AvbrutenException. Det gör att den nuvarande exekverande tråden stoppar körningen tillfälligt för ett visst antal millisekunder. Om en annan tråd avbryter den aktuella tråden, raderas den pågående trådens avbrutna status när detta undantag kastas.
Figur 01: Java-program med sömnmetod
Enligt ovanstående program innehåller körmetoden kod som ska utföras. I huvudprogrammet skapas två objekt i ExampleThread1, och startmetoderna åberopas på dem. Det kommer att tillåta att köra koden inuti körmetoden. Endast en tråd körs åt gången. Med tråden. sömn (1000); tillåter den första tråden att avsluta körningen i 1000 millisekunder. När en tråd sover, tar trådplaneraren upp den andra tråden.
Flera trådar kan komma åt en delad resurs. Det kan orsaka att en felaktig utgång genereras. Trådsynkronisering kan användas för att göra endast en tråd för åtkomst till 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 till 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 returnerar, kan t2 ändra de värden som sparas av t1. Detta kan orsaka att t1 ger en felaktig utgång. Med hjälp av synkronisering, när t1 börjar använda Text1.txt-filen, kan filen vara låst, så den är endast tillgänglig av 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 släppa låset. Låset är också känt som bildskärm.
Trådsynkronisering kan uppnås genom kommunikation mellan trådarna. En kritisk sektion är ett kodsegment som öppnar de delade resurserna. I trådlös kommunikation är en tråd pausad i sin kritiska sektion, och en annan tråd får komma in i samma kritiska sektion som ska utföras. Det genomförs med hjälp av vänta, meddela och meddela alla metoder. De tillhör Objeklassen. Väntelägen används för att tillåta den aktuella tråden att släppa låset och vänta tills en annan tråd påminner om anmälan eller meddelandetAlla metod för objektet. Anmälningsmetoden används för att vakna en enda tråd som väntar på låset. AnmälanAll väcker upp alla trådar som väntar på låset.
Figur 02: Kalkylatorklass
Figur 03: Huvudmetod
Kalkylatorklassen utökar tråden. Det synkroniserade blocket är inuti körmetoden. Slingan och meddelandet är inuti det synkroniserade blocket. Inom huvudmetoden är en förekomst av en tråd skapad och startmetoden uppmanad till den förekomsten. Huvudmetoden väntar tills tråden ger en anmälan. Vid genomförandet av programmet väntar huvudmetoden till hela körningens körning och väntar på meddelandemetoden. När meddelandemetoden heter kallas huvudmetoden att vänta och börjar exekvera resten av koden. Huvud väntar tills kalkylatorns tråd är klar. Slutligen skrivs resultatet av summan ut.
Om det inte finns något synkroniserat block och om huvudmetoden har en kod som nedan, kommer den att ge utmatningen som noll eftersom den inte väntar på att den andra tråden ska slutföra.
Kalkylator t1 = ny kalkylator ();
t1. Start ();
System.out.println (t1.sum);
sova vs vänta i Java | |
Sova-metoden får den aktuella tråden att avbryta exekveringen för det angivna antalet millisekunder, med förbehåll för precisionen och noggrannheten hos systemtidtagare och schemaläggare. | Vänteläget gör att den aktuella tråden väntar tills en annan tråd påbereder meddelandet eller meddelarAlla metoden för objektet. |
Förening med Lås | |
Sömmetoden släpper inte låset på ett objekt under synkronisering. | Vänteläget frigör lås under synkronisering. |
Metod för utförande | |
Sömmetoden utförs på den aktuella tråden. | Väntelägen heter på objektet. |
Associerad klass | |
Sömn är en metod för trådklass. | Väntan är en metod för Objeklass. |
Komplettering | |
Sömnprocessen avslutas efter att den angivna tiden är över. | Väntelägesmetoden avbryts genom att ringa meddelandet eller meddela alla metoder. |
Det finns flera processer som körs på operativsystemet. Varje process kan ha flera trådar. En tråd är den minsta förädlingsenheten i ett operativsystem. Java programmeringsspråk stöder multithreading. Det tillåter att flera trådar körs samtidigt. Sömn och väntan är två metoder som kan användas vid genomförande av multi-threading. Skillnaden mellan sömn och vänta i Java är att sömnen används för att avbryta utförandet av den aktuella tråden för det angivna antalet millisekunder medan väntelägesmetoden används för att få den aktuella tråden att vänta tills en annan tråd åberopar meddelandet eller meddelarAll metod för objektet.
1. "Inter-thread Communication in Java - Javatpoint.". JavaTPoint. Tillgänglig här
2. Intergänga Kommunikation i Java Multithreading | Core Java Tutorial | Studytonight. Tillgänglig här