Multithreading în Java – Învățați cu exemple
Publicat: 2022-06-23Java este un limbaj de programare care acceptă programe multithreaded. Programele multithreaded găzduiesc două sau mai multe părți (threads) care rulează simultan, gestionând diferite sarcini, permițând utilizarea optimă a CPU. Multi-threading-ul este o extensie a multi-tasking-ului. Multitasking-ul poate fi definit ca o caracteristică în care mai multe procese împărtășesc o resursă de procesare comună, cum ar fi o unitate centrală de procesare.
Multithreading ramifică conceptul de multi-tasking la diverse aplicații în care operațiunile definite pot fi împărțite în fire individuale mai mici.
Fiecare dintre aceste fire rulează simultan și independent cu căi de execuție diferite, astfel încât o excepție într-un fir de execuție să nu afecteze performanța altora.
Învață cursuri de dezvoltare software online de la cele mai bune universități din lume. Câștigați programe Executive PG, programe avansate de certificat sau programe de master pentru a vă accelera cariera.
Ce este Multithreading în Java?
Multithreadingul în Java este locul în care mai multe fire sunt executate simultan pentru a maximiza timpul CPU.
Ciclul de viață al unui fir
Firele au diferite etape în ciclul lor de viață. Acestea sunt după cum urmează:
- Nou: firul își începe ciclul de viață ca un fir nou. Rămâne în această etapă de nou-născut până când un program rulează firul.
- Rulabil: Un fir de execuție născuți intră în stadiul de rulat atunci când un program îl inițiază. Firul începe să-și execute sarcina în această etapă.
- Așteptare: aceasta este o etapă de tranziție în care un fir așteaptă ca un alt fir să-și finalizeze sarcina. Un fir în stadiul de așteptare comută într-o etapă rulabilă după ce primește un semnal de la alte fire.
- Așteptare temporizată: aceasta este o etapă în care poate intra un fir rulabil pentru un anumit interval de timp. Firele din această etapă se mută înapoi la etapa rulabilă la sfârșitul intervalului de timp specific.
- Dead: Aceasta este etapa finală din ciclul de viață al unui fir. Un thread intră în această etapă după ce își finalizează sarcina.
Beneficiile Multithreading-ului în Java
- Întrucât firele în Java sunt independente, multithreadingul Java nu blochează utilizatorii și pot efectua multe operații simultan.
- Întrucât multithreadingul în Java permite operațiuni multiple, economisește timp și este eficient.
- Programul poate rula continuu chiar dacă o parte a acestuia este interceptată.
- Îmbunătățește performanța față de programele paralele convenționale care utilizează procese multiple.
- Crearea de programe eficiente care utilizează timpul CPU la maxim.
- Îmbunătățește considerabil timpul de răspuns al aplicațiilor complexe.
- Necesită mai puține resurse în comparație cu programele paralele tradiționale.
Ordinea priorității firului
Sistemul de operare determină programul de execuție al firului de execuție pe baza priorității firului de execuție. Prioritatea unui fir este determinată pe baza valorii constantei sale.
- Constanta 1 primește prioritate minimă ( MIN_PRIORITY)
- Constanta 5 primește prioritate normală ( NORM_PRIORITY)
- Constanta 10 primește prioritatea maximă (MAX_PRIORITY)
Cursuri populare și articole despre inginerie software
Programe populare | |||
Program Executive PG în Dezvoltare Software - IIIT B | Programul de Certificat Blockchain - PURDUE | Programul de certificate de securitate cibernetică - PURDUE | MSC în Informatică - IIIT B |
Alte articole populare | |||
Salariu inginer cloud în SUA 2021-22 | Salariu AWS Solution Architect în SUA | Salariu pentru dezvoltatori backend în SUA | Salariu pentru Dezvoltator Front End în SUA |
Salariu web developer in SUA | Întrebări de interviu Scrum Master în 2022 | Cum să începi o carieră în securitatea cibernetică în 2022? | Opțiuni de carieră în SUA pentru studenții la inginerie |
Cum se creează un fir în Java?
Threadurile pot fi create în Java în două moduri:
- Extinderea clasei de fire
- Implementarea unei interfețe rulabile
Crearea unui thread prin extinderea clasei thread
Câteva metode ale clasei de fire și funcțiile lor sunt prezentate mai jos.
- getName() : Pentru obținerea numelui firului
- getPriority(): Pentru a obține prioritatea firului
- is Alive(): pentru a afla dacă rulează un fir
- join(): așteptați încheierea unui fir
- run() : Punctul de intrare al firului
- sleep(): Pentru suspendarea unui fir pentru o anumită fereastră de timp.
- start() : Pentru a activa un fir prin metoda sa run().
Pasul 1 : Suprascrieți metoda run() dată în clasa thread-ului. Acesta acționează ca punct de intrare pentru fir și întreaga logică a programului ar trebui să fie încadrată în 4this.
Sintaxa metodei run() este următoarea:
alergare public nul ( )
Pasul 2: Inițiază obiectul thread prin metoda start () a cărei sintaxă este un start void ( ) .
Iată exemple de program multithreading în Java:
Exemplul 1:
clasa MultithreadingDemo extinde Thread{
public void run(){
System.out.println(„Firul meu rulează.”);
}
public static void main(String args[]){
MultithreadingDemo obj=new MultithreadingDemo();
obj.start();
}
}
Rezultatul programului de mai sus va fi:
Firul meu rulează.
Exemplul 2:
clasa Count extinde Thread
{
Numara()
{
super(„firul meu se extinde”);
System.out.println(„firul meu este creat” + aceasta);
start();
}
public void run()
{
încerca
{
pentru (int i=0;i<10;i++)
{
System.out.println(„Tipărirea numărului” + i);
Thread.sleep(1000);
}
}
catch(InterruptedException e)
{
System.out.println(„firul meu a fost întrerupt”);
}
System.out.println(„Firul meu s-a încheiat”);
}
}
clasa ExtendingExample
{
public static void main(Argumente șir[])
{
Count cnt = new Count();
încerca
{
while(cnt.isAlive())
{
System.out.println(„Firul principal va fi viu până când firul copil va trăi”);
Thread.sleep(1500);
}
}
catch(InterruptedException e)
{
System.out.println(„Firea principală a fost întreruptă”);
}
System.out.println(„Executarea firului principal este încheiată”);
}
}
Ieșirea programului de mai sus va fi
firul meu este creatThread[firul meu rulabil,5,principal]
Firul principal va fi viu până când firul copil trăiește
Imprimarea numărului 0
Imprimarea numărului 1
Firul principal va fi viu până când firul copil trăiește
Imprimarea numărului 2
Firul principal va fi viu până când firul copil trăiește
Imprimarea numărului 3
Imprimarea numărului 4
Firul principal va fi viu până când firul copil trăiește
Imprimarea numărului 5
Firul principal va fi viu până când firul copil trăiește
Imprimarea numărului 6
Imprimarea numărului 7
Firul principal va fi viu până când firul copil trăiește
Imprimarea numărului 8
Firul principal va fi viu până când firul copil trăiește
Imprimarea numărului 9
rularea mea firului este încheiată
Executarea firului principal este încheiată
Crearea unui thread prin implementarea unei interfețe rulabile
Există trei pași importanți care trebuie urmați atunci când utilizați această metodă.
Pasul 1 : O metodă run() ar trebui să fie implementată de o interfață rulabilă. Această metodă run() acționează ca punct de intrare pentru fir și ar trebui să conțină întreaga logică a programului.
Sintaxa pentru metoda run() este
public void run( )
Pasul 2: Un obiect thread trebuie activat folosind constructorul de mai jos.
Thread(Runnable threadObj, String threadName);
Aici threadObj acționează ca clasa care implementează interfața rulabilă, iar numele firului este numele dat noului fir.
Pasul 3: După crearea obiectului thread, acesta poate fi inițiat prin metoda start() care execută metoda run().
Sintaxa metodei start () este următoarea.
void start();
Un exemplu de creare a unui fir prin implementarea unei interfețe rulabile poate fi găsit aici .
Pentru a afla mai multe despre Java multithreading și dezvoltarea de software, vă recomandăm să vă înscrieți în Programul Executive Postuniversitar în Dezvoltare Software oferit de IIIT Bangalore în asociere cu upGrad.
Executive PG Program in Software Development este un program online de 13 luni conceput pentru a ajuta profesioniștii care lucrează să facă un salt uriaș în cariera lor prin studii de caz și proiecte relevante pentru industrie. Programul include, de asemenea, peste zece sesiuni live de la experții din industrie pentru a ajuta candidații să învețe mai bine.
Programul include proiecte din industrie pentru a ajuta candidații să aibă experiență practică și expunere adecvată în industrie pentru a face învățarea lor relevantă și practică. Finalizarea programului va recompensa candidații cu râvnita certificare IIIT B și statutul de absolvenți.
Programul vine cu suport de plasare la 360 de grade de la upGrad, care a afectat peste 40.000 de cursanți plătiți din toate colțurile lumii pentru a face lucrurile și mai bune. upGrad are o bază de cursanți din peste 85 de țări, oferind o oportunitate neprețuită de a avea o rețea globală de egali pentru candidați.
Care este diferența dintre multitasking și multithreading în Java?
Multitasking este procesul prin care multe sarcini pot fi efectuate simultan, iar multithreading este procesul de executare a mai multor fire în același timp, fiecare thread executând o activitate diferită.
Moștenirea multiplă este acceptată de Java?
Limbajul de programare Java acceptă moștenirea multiplă, un proces în care o clasă implementează mai multe interfețe. O clasă poate avea diferite implementări ale unei metode (implicite sau statice) în interfețe. Moștenirea multiplă în Java poate fi implementată numai cu interfețe și nu cu clase, spre deosebire de limbajul C++.
Multithreadingul poate îmbunătăți performanța Java?
Multithreading îmbunătățește performanța Java, permițând mai multor procesoare să se ocupe de aceeași problemă. Acest lucru nu numai că accelerează procesul, dar ajută și la rezolvarea eficientă a problemelor.