Cum se creează un thread în Java? | Multithreading în Java
Publicat: 2020-12-29În acest articol, vom arunca o privire asupra threading-ului în Java și vom explora mecanismele care fac posibilă threading-ul.
Cuprins
Threading în Java
Caracteristica de threading din Java este un sub-proces ușor. Este considerată cea mai mică unitate de procesare. Este un mijloc de a realiza multitasking într-un program. Este o caracteristică utilă când vine vorba de jocuri, animație etc.
Java are suport încorporat pentru crearea de fire și mai multe fire. Aceasta este o abordare inteligentă pentru reducerea la minimum a ineficiențelor și a tragului prin utilizarea optimă a spațiului CPU. În Java, acest lucru se poate face în două moduri:
- Extindeți clasa Thread sau
- Implementați interfața rulabilă
Când mai multe fire de execuție sunt executate simultan, se numește multithreading. Acest lucru permite, în esență, mai multe părți ale unui program să ruleze simultan, fiecare parte a unui fir și fiecare fir de execuție urmând o cale distinctă de execuție.
Threadurile utilizează spațiu de memorie partajat; memoria nu este alocată fiecărei părți, ceea ce duce la utilizarea maximă a procesorului. În plus, schimbarea contextelor nu necesită mult timp. Cu toate acestea, prea multe fire de execuție ar putea angaja CPU-ul în schimbarea contextului, iar execuția dvs. ar putea fi întârziată.
Un fir poate exista într-una dintre următoarele șase state
- NOU – de îndată ce un fir este creat, acesta există în noua stare. În esență, înseamnă că firul încă nu a început execuția.
- RUNNING – când un fir de execuție este în curs de execuție sau este în linie pentru a fi executat, acesta este în stare de rulare.
- AȘTEPTARE – un fir de execuție este uneori oprit sau suspendat pentru a permite o altă activitate. O versiune fără time-out a wait() sau join() poate suspenda executarea unui fir. Odată ce acțiunea a avut loc, un fir suspendat este reluat.
- TIMED-WAITING – un fir de execuție este uneori oprit sau suspendat temporar pentru o anumită durată. De exemplu, când funcția sleep() este apelată.
- BLOCAT – când un fir Java suspendat nu poate achiziționa o anumită resursă, acesta este blocat și există în starea blocată.
- TERMINAT – atunci când un fir și-a încheiat execuția, acesta există în starea terminată. Cu toate acestea, puteți încheia un thread în orice moment.
Aflați mai multe despre arhitectura și componentele Java.

Beneficiile creării unui fir în Java
Există mai multe avantaje în a crea fire. Unele dintre acestea sunt
- Deoarece firele de execuție sunt independente, o execuție nu o afectează pe alta chiar și atunci când funcționează pe spațiu de memorie partajat. Aceasta înseamnă, de asemenea, că puteți efectua mai multe operații simultan.
- Threadingul este o formă de multitasking și economisește timp.
- O eroare într-un fir nu afectează altul.
Cum se creează un fir în Java?
După cum sa discutat mai sus, există două moduri de a face acest lucru: Extindeți clasa Thread sau Implementați interfața rulabilă
Clasa de fire
Există constructori și metode în clasa Thread care vă permit să efectuați operații, să gestionați și să urmăriți firele. Extinde clasa Object care apoi implementează interfața însoțitoare Runnable. Constructorii prezenți în clasa thread sunt : Thread(), Thread(Nume șir), Thread(Runnable r) și Thread(Runnable r, String name).
Mai jos sunt metodele și descrierile acestora
| Metodă | La ce se foloseste? |
| start() | Începe execuția |
| alerga() | Pentru a rula o acțiune pentru un fir |
| dormi() | Afișează un fir în repaus pentru o anumită durată |
| a te alatura() | Așteptați până când se încheie un alt fir |
| getPriority() | Pentru a indica prioritatea unui fir dat |
| stabilește prioritatea() | Pentru a modifica prioritatea unui fir dat |
| getName() | Pentru a returna numele unui fir specificat |
| Pune un nume() | Pentru a schimba numele firului specificat |
| getId() | Pentru a returna ID-ul unui fir dat |
| este in viata() | Pentru a testa dacă un fir mai există în cineva din statele |
| Randament() | Întrerupe execuția unui obiect fir pentru a permite rularea unui alt fir de execuție |
| suspenda() | Pentru a suspenda un anumit thread |
| relua() | Pentru a relua un fir din starea suspendată |
| Stop() | Pentru a opri un anumit thread |
| distruge() | Pentru a distruge grupul și subgrupurile de fire |
| întrerupe() | Pentru a provoca o întrerupere în execuția firului |
| este întreruptă() | Pentru a testa dacă execuția unui fir dat este întreruptă |
| întrerupt() | Pentru a testa dacă execuția curentă a firului de execuție este întreruptă |
| activeCount() | Pentru a returna numărul de fire active dintr-un grup de fire |
| holdLock() | Returnează adevărat dacă și numai dacă firul curent deține blocarea monitorului pe obiectul specificat. |
| getState() | Pentru a determina starea unui fir dat |
| setContextClassLoader() | Pentru a seta contextul ClassLoader |
| getContextClassLoader() | Pentru a returna contextul ClassLoader |
Pentru a crea un thread prin extinderea clasei Thread, mai întâi trebuie creată o clasă care extinde clasa java.lang.Thread. Această clasă este definită pentru a suprascrie metoda run(). Apoi, un obiect este creat în noua clasă care urmează prin apelarea metodei start() pentru a începe execuția firului.

Trebuie să citiți: Programe de modelare în Java pe care ar trebui să le verificați
Interfață rulabilă
Acesta este cel mai simplu mod de a crea un fir. Este necesară o singură metodă pentru a implementa interfața rulabilă: run()
Pentru a o declara, scriem
public void run()

În interiorul run( ), trecem la scrierea codului pentru a crea un fir nou.
Înscrieți-vă la cursurile de inginerie software de la cele mai bune universități din lume. Câștigă programe Executive PG, programe avansate de certificat sau programe de master pentru a-ți accelera cariera.
Clasa de fir vs interfață rulabilă
Clasa Thread vă împiedică să extindeți orice altă clasă. Acest lucru se datorează faptului că moștenirea multiplă nu este posibilă în Java. Cu toate acestea, acesta nu este cazul când implementăm interfața Runnable în care continuați să extindeți alte clase.
Extinderea clasei Thread face accesibile pentru dvs. câteva metode importante care îmbunătățesc funcționalitatea unui fir. De exemplu, yield(), stop(), isalive(), întrerupere(). Interfața Runnable are o singură metodă care este destul de limitativă.
Încheierea
Dacă sunteți interesat să aflați mai multe despre Java, dezvoltarea de software full-stack, consultați programul Executive PG de la upGrad și IIIT-B în dezvoltarea de software full-stack, care este conceput pentru profesioniști care lucrează și oferă peste 500 de ore de formare riguroasă, 9+ proiecte și sarcini, statutul de absolvenți IIIT-B, proiecte practice practice și asistență pentru locuri de muncă cu firme de top.

