Før du introducerer tråd koncept , var vi ikke i stand til at køre mere end én opgave parallelt. Det var en ulempe, og for at fjerne denne ulempe, Tråd koncept Blev introduceret.
EN Tråd er en meget letvægtet proces, eller vi kan sige den mindste del af processen, der tillader et program at fungere mere effektivt ved at køre flere opgaver samtidigt.
ny linje python
For at udføre komplicerede opgaver i baggrunden brugte vi Tråd koncept i Java . Alle opgaverne udføres uden at påvirke hovedprogrammet. I et program eller en proces har alle trådene deres egen separate sti til udførelse, så hver tråd i en proces er uafhængig.
En anden fordel ved at bruge tråd er, at hvis en tråd får en undtagelse eller en fejl på tidspunktet for dens udførelse, påvirker det ikke udførelsen af de andre tråde. Alle trådene deler en fælles hukommelse og har deres egen stak, lokale variabler og programtæller. Når flere tråde udføres parallelt på samme tid, er denne proces kendt som Multithreading .
På en enkel måde er en tråd en:
- Funktion, hvorigennem vi kan udføre flere aktiviteter inden for en enkelt proces.
- Letvægtsproces.
- Række af udførte udsagn.
- Indlejret sekvens af metodekald.
Tråd model
Ligesom en proces eksisterer en tråd i flere stater. Disse stater er som følger:
1) Ny (klar til at køre)
En tråd er inde Ny når den får CPU-tid.
2) Løb
En tråd er inde a Løb angive, hvornår den er under udførelse.
3) Suspenderet
En tråd er i Suspenderet angive, hvornår den er midlertidigt inaktiv eller under udførelse.
4) Blokeret
En tråd er i Blokeret angive, hvornår den venter på ressourcer.
5) Afsluttet
En tråd kommer i denne tilstand, når den på et givet tidspunkt stopper sin udførelse øjeblikkeligt.
Oprettelse af tråd
En tråd oprettes enten ved at 'oprette eller implementere' Kørbar grænseflade eller ved at forlænge Tråd klasse . Dette er de eneste to måder, hvorpå vi kan skabe en tråd.
hvad er java hashmap
Lad os dykke ned i detaljer om begge disse måder at oprette en tråd på:
Tråd klasse
EN Tråd klasse har flere metoder og konstruktører, som giver os mulighed for at udføre forskellige operationer på en tråd. Trådklassen udvider Objekt klasse. Det Objekt klasse implementerer Kørbar interface. Trådklassen har følgende konstruktører, der bruges til at udføre forskellige operationer.
Kørbar grænseflade (run() metode)
Den Runnable-grænseflade skal implementeres af den klasse, hvis instanser er beregnet til at blive udført af en tråd. Den kørebare grænseflade giver os løb() metode til at udføre en handling for tråden.
start() metode
Metoden bruges til at starte en tråd, som vi for nylig har oprettet. Den starter en ny tråd med en ny callstack. Efter at have udført Start() metoden ændrer tråden tilstanden fra New til Runnable. Den udfører run() metode når tråden får den rigtige tid til at udføre den.
Lad os tage et eksempel for at forstå, hvordan vi kan skabe en Java tråd ved at udvide trådklassen:
Trådeksempel1.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:
Oprettelse af tråd ved at implementere den kørebare grænseflade
I Java kan vi også oprette en tråd ved at implementere den runnable grænseflade. Den kørbare grænseflade giver os både run()-metoden og start()-metoden.
jlist
Lad os tage et eksempel for at forstå, hvordan vi kan oprette, starte og køre tråden ved hjælp af den kørebare grænseflade.
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 ovenstående eksempel udfører vi Multithreading ved at implementere den kørebare grænseflade. For at lære mere om Multithreading, Klik her .