Innan du introducerar tråd koncept , vi kunde inte köra mer än en uppgift parallellt. Det var en nackdel, och för att ta bort den nackdelen, Tråd koncept introducerades.
A Tråd är en mycket lätt process, eller vi kan säga den minsta delen av processen som gör att ett program kan fungera mer effektivt genom att köra flera uppgifter samtidigt.
python ny linje
För att utföra komplicerade uppgifter i bakgrunden använde vi Trådkoncept i Java . Alla uppgifter utförs utan att det påverkar huvudprogrammet. I ett program eller en process har alla trådar sin egen separata sökväg för exekvering, så varje tråd i en process är oberoende.
En annan fördel med att använda tråd är att om en tråd får ett undantag eller ett fel vid tiden för dess körning, påverkar det inte körningen av de andra trådarna. Alla trådar delar ett gemensamt minne och har sin egen stack, lokala variabler och programräknare. När flera trådar körs parallellt samtidigt kallas denna process Multithreading .
På ett enkelt sätt är en tråd en:
- Funktion genom vilken vi kan utföra flera aktiviteter inom en enda process.
- Lättviktsprocess.
- Serie av utförda uttalanden.
- Kapslad sekvens av metodanrop.
Trådmodell
Precis som en process finns en tråd i flera stater. Dessa tillstånd är följande:
1) Ny (klar att köra)
En tråd är inne Ny när det får CPU-tid.
2) Löpning
En tråd är inne en löpning ange när den är under utförande.
3) Avstängd
En tråd finns i Upphängd ange när den är tillfälligt inaktiv eller under exekvering.
4) Blockerad
En tråd finns i Blockerad ange när den väntar på resurser.
hur man returnerar array i java
5) Avslutad
En tråd kommer i detta tillstånd när den vid en given tidpunkt stoppar sin exekvering omedelbart.
Skapar tråd
En tråd skapas antingen genom att 'skapa eller implementera' den Körbart gränssnitt eller genom att förlänga Trådklass . Detta är de enda två sätten genom vilka vi kan skapa en tråd.
Låt oss dyka in i detaljer om båda dessa sätt att skapa en tråd:
Trådklass
A Trådklass har flera metoder och konstruktörer som gör att vi kan utföra olika operationer på en tråd. Trådklassen utökar Objekt klass. De Objekt klass implementerar Körbar gränssnitt. Trådklassen har följande konstruktorer som används för att utföra olika operationer.
Körbart gränssnitt (run()-metod)
Det körbara gränssnittet måste implementeras av den klass vars instanser är avsedda att exekveras av en tråd. Det körbara gränssnittet ger oss springa() metod för att utföra en åtgärd för tråden.
start() metod
Metoden används för att starta en tråd som vi nyskapat. Det startar en ny tråd med en ny callstack. Efter att ha utfört Start() metoden ändrar tråden status från Ny till Runnable. Den utför run() metod när tråden får rätt tid att köra den.
Låt oss ta ett exempel för att förstå hur vi kan skapa en Java tråd genom att utöka klassen Thread:
medan loop java
ThreadExample1.java
// Implementing runnable interface by extending Thread class public class ThreadExample1 extends Thread { // run() method to perform action for thread. public void run() { int a= 10; int b=12; int result = a+b; System.out.println('Thread started running..'); System.out.println('Sum of two numbers is: '+ result); } public static void main( String args[] ) { // Creating instance of the class extend Thread class ThreadExample1 t1 = new ThreadExample1(); //calling start method to execute the run() method of the Thread class t1.start(); } }
Produktion:
Skapar tråd genom att implementera det körbara gränssnittet
I Java kan vi också skapa en tråd genom att implementera det körbara gränssnittet. Det körbara gränssnittet ger oss både run()-metoden och start()-metoden.
Låt oss ta ett exempel för att förstå hur vi kan skapa, starta och köra tråden med det körbara gränssnittet.
ThreadExample2.java
class NewThread implements Runnable { String name; Thread thread; NewThread (String name){ this.name = name; thread = new Thread(this, name); System.out.println( 'A New thread: ' + thread+ 'is created ' ); thread.start(); } public void run() { try { for(int j = 5; j > 0; j--) { System.out.println(name + ': ' + j); Thread.sleep(1000); } }catch (InterruptedException e) { System.out.println(name + ' thread Interrupted'); } System.out.println(name + ' thread exiting.'); } } class ThreadExample2 { public static void main(String args[]) { new NewThread('1st'); new NewThread('2nd'); new NewThread('3rd'); try { Thread.sleep(8000); } catch (InterruptedException excetion) { System.out.println('Inturruption occurs in Main Thread'); } System.out.println('We are exiting from Main Thread'); } }
Produktion:
I exemplet ovan utför vi Multithreading genom att implementera det körbara gränssnittet. För att lära dig mer om Multithreading, Klicka här .