Introduktion till trådlivscykeln i Java

En tråd upplever många faser i livscykeln. Såsom en tråd kommer till världen, började, springer, och efter det går bort. Följande diagram förklarar trådens hela livscykel.

  • Thread Constructor producerar en tråd genom ett nytt tillstånd.
  • Samtal börjar metoden i tråd kan komma igenom det körbara tillståndet.
  • Trådschemaläggare om Java kör den tråden när processorn tar emot.
  • När tråd går till ett blockerat tillstånd kommer den att köra igen eftersom det kommer tillbaka till ett körbart tillstånd.
  • Om väntemetoden kallas tråd skulle gå till att vänta på tillståndet, kommer den att gå till körbart tillstånd kort efter det kommer att bli anmälan i hela Inform samt en anmälan alla metod.
  • Tråden slutar när körmetoden upphör.

Vad är tråd?

En tråd definieras på operativsystemnivå. Och Java-språket, liksom alla andra språk, använder, utnyttjar, tjänsten som ges av operativsystemet. Från utvecklarens synvinkel är en tråd en uppsättning instruktioner som vi ska skriva vår ansökan och utföra på ett visst sätt. En applikation i sig kan bestå av flera trådar. Olika trådar kan köras samtidigt. JVM (Java Virtual Machine) fungerar med flera trådar. Det finns trådar för skräpkollektionen. Det finns trådar för Just in Time Compiler och andra tekniska trådar.

States of Thread Life Cycle i Java

Nedan visas de olika staterna i trådlivscykeln i Java:

1. Ny: En ny tråd startar deras livscykel i det nya tillståndet. Det fortsätter att vara i det här läget innan programmet startar tråden. Dessutom är det känt som en skapad tråd.

2. Körbar: När en nyligen född tråd kan börja, förvandlas tråden till körbar. En tråd med detta tillstånd anses utföra sin process.

3. Väntar: Ibland går en trådövergång mot väntan runt staten trots att tråden väntar på att en annan tråd ska utföra en aktivitet. En tråd övergår tillbaka till det körbara tillståndet endast om en extra tråd indikerar den väntande tråden för att fortsätta prestera.

4. Tidsbestämd väntning: En körbar tråd kan enkelt räkna ut den tidsinställda väntan på att staten får ett specifikt tidsintervall. En tråd med detta tillstånd övergår till det körbara tillståndet när punktintervallet löper ut eller om händelsen den verkligen väntar inträffar.

5. Avsluten: En löpbar tråd kommer i det avslutade tillståndet eftersom den fullbordar sin uppgift eller annars avslutas.

Hur skapar jag en tråd i Java?

Det mest grundläggande sättet att skapa en tråd i Java är att använda Runnable Pattern. Du måste först skapa en instans av Runnable-gränssnittet, vilket är mycket enkelt; det finns bara en metod att implementera. Sedan överför vi den här instansen till konstruktören för klassen Tråd. Och sedan kallar vi bara startmetoden () för det här skapade trådobjektet, för att starta en ny tråd som kommer att köra uppgiften lindad i vårt Runnable-objekt.

Så först skapar vi en instans av en Runnable. Det finns bara en metod att implementera, som kallas metoden run (). Detta är Java 7-mönstret för att göra det, med en instans av en anonym klass. Men vi kan också använda ett lambda-uttryck för att implementera ett Runnable eftersom det bara finns en metod i Runnable-gränssnittet.

Låt oss skapa trådar med mycket enkla exempel

Vi kommer att se vad som kan gå fel med ett rasvillkor som är med osynkroniserad kod som ska synkroniseras och vi kommer att fixa vår kod med synkronisering. Detta första exempel är väldigt enkelt, det är väldigt enkelt. Det handlar bara om att skapa en uppgift.

Produktion:

En uppgift är ett exempel på det körbara gränssnittet, låt oss kalla det körbart, och vi kan implementera det här gränssnittet med ett lambda-uttryck. Denna uppgift ges till en ny tråd och körs i samband med denna tråd. Så vi kommer bara att skriva ut namnet på tråden som kör denna uppgift. Jag kör i … Thread.currentThread () är en statisk metod i klassen Tråd som returnerar tråden som kör den aktuella uppgiften. Och vi måste bara ringa getName () för detta trådobjekt för att returnera namnet på en tråd. Sedan efter att vi skapat en trådinstans t = ny tråd. Att skicka detta körbara som parameter. Så den här tråden kommer att köra denna kod. Och att starta det. t.start () detta är en start () -metod som vi behöver anropa. Vad vi också kan göra är att ge ett uttryckligt namn på denna tråd med t.setName ("Min tråd"). Och nu kan vi köra den här koden. Istället för metod för samtalstart () kallar vi metoden körning (), och om vi kör den här koden är problemet att uppgiften är korrekt utförd, men den körs inte i tråden vi har skapat. Det körs i huvudtråden som är tråden som kör huvudmetoden. Så denna körning () -metod ska inte kallas om vi vill lansera en ny tråd.

Produktion:

Metoder för trådcykel i Java

Metoderna som beskrivs med Simple Thread presenteras i tabellen.

DatatyperTrådmetodnamn
Sträng

hämta namn()

Returnera den här trådens namn

intfå prioritet ()

Återgår trådens prioritet

booleanlever()

Testar om den här tråden fortfarande körs

tomhetAnsluta sig()

Väntar på att den här tråden dör (avslutas)

tomhetspringa()

När denna tråd byggdes med ett individuellt Runnable-objekt, kallas det som vanligtvis Runnable-objektets körmetod; annars kommer den här metoden inte heller att returnera. Närhelst trådklass kan utökas såväl som, körs () -metoden över-ridas under underklassen kallas en över-rid-kör-metod.

tomhetsetName ( String name )

Ändrar namnet med den här tråden för att bli jämförbar med argumentnamnet.

statisk tomgång

sömn ( lång millis ) kastar avbruten / undantag
Gör att den nuvarande fungerande tråden vilar för
den önskade mängden millisekunder.
statisk tomgångsömn ( lång millis, int nanos ) kastar InterruptException

Det får den nuvarande fungerande tråden att sova (upphöra exekvering) för den erforderliga mängden millisekunder såväl som för den specifika mängden nanosekunder.

tomhetStart()

Utlöser dessa trådar för att starta körningen; Java Virtual Machine kallar körmetoden för den tråden.

statisk tomgångavkastning()

Aktiverar det för närvarande trådobjektet för att kort pausa och tillåta att ytterligare trådar körs.

statisk trådcurrentThread ()

Returnerar ett omnämnande av det för närvarande exekverande trådobjektet.

Slutsats

  • Enkelt att börja använda trådar, extremt svårt att förstå.
  • Att utforma klasser som innehåller metoder som kan gängasäkra är utmanande.
  • Läs: JavaDoc för att få klassen java.lang.Thread

Rekommenderad artikel

Detta har varit en guide till trådens livscykel i Java. Här diskuterar vi vad som är tråd? och olika stater i trådens livscykel tillsammans med skapandet av trådar i java. Du kan också gå igenom våra andra föreslagna artiklar för att lära dig mer -

  1. Ramar i Java
  2. Stjärnamönster i Java
  3. Slå samman sortering i Java
  4. Bästa Java-kompilatorer
  5. Statisk metod i PHP

Kategori: