Prieš pristatydami siūlų koncepcija , negalėjome lygiagrečiai vykdyti daugiau nei vienos užduoties. Tai buvo trūkumas, ir norint pašalinti šį trūkumą, Siūlo koncepcija buvo pristatytas.
A Siūlas yra labai lengvas procesas arba, galima sakyti, mažiausia proceso dalis, leidžianti programai veikti efektyviau, vienu metu vykdant kelias užduotis.
c programos eilučių masyvas
Norėdami atlikti sudėtingas užduotis fone, naudojome Gijos koncepcija Java . Visos užduotys vykdomos nepažeidžiant pagrindinės programos. Programoje ar procese visos gijos turi savo atskirą vykdymo kelią, todėl kiekviena proceso gija yra nepriklausoma.
Kitas naudojimo pranašumas siūlas yra tai, kad jei gijai jos vykdymo metu atsiranda išimtis arba klaida, tai neturi įtakos kitų gijų vykdymui. Visos gijos turi bendrą atmintį ir turi savo krūvą, vietinius kintamuosius ir programų skaitiklį. Kai vienu metu lygiagrečiai vykdomos kelios gijos, šis procesas vadinamas Daugiagija .
Paprastu būdu gija yra:
- Funkcija, kurios dėka galime atlikti kelias veiklas viename procese.
- Lengvas procesas.
- Atliktų pareiškimų serija.
- Įdėta metodų iškvietimų seka.
Siūlų modelis
Kaip ir procesas, gija egzistuoja keliose būsenose. Šios būsenos yra tokios:
1) Nauja (paruošta paleisti)
Yra siūlas Nauja kai gauna CPU laiko.
2) Bėgimas
Yra siūlas a Bėgimas nurodyti, kada jis vykdomas.
3) Sustabdytas
Siūlas yra Sustabdytas nurodyti, kai jis laikinai neaktyvus arba vykdomas.
4) Užblokuotas
Siūlas yra Užblokuota nurodyti, kada laukia išteklių.
oi
5) Nutrauktas
Siūlas patenka į tokią būseną, kai bet kuriuo metu nedelsiant sustabdo jos vykdymą.
Gijos kūrimas
Gija sukuriama „sukuriant arba įgyvendinant“. Paleidžiama sąsaja arba pratęsiant Siūlų klasė . Tai yra vieninteliai du būdai, kuriais galime sukurti giją.
Pasinerkime į abiejų šių gijos kūrimo būdų detales:
Siūlų klasė
A Siūlų klasė turi keletą metodų ir konstruktorių, leidžiančių atlikti įvairias gija operacijas. Siūlų klasė išplečia Objektas klasė. The Objektas klasė įgyvendina Paleisti sąsaja. Siūlų klasėje yra šie konstruktoriai, naudojami įvairioms operacijoms atlikti.
Vykdoma sąsaja (paleisti () metodas)
Vykdomąją sąsają turi įdiegti ta klasė, kurios egzempliorius turi vykdyti gija. Paleidžiama sąsaja suteikia mums paleisti () būdas atlikti veiksmą gijai.
start() metodas
Šis metodas naudojamas naujai sukurtai gijai pradėti. Pradedama nauja gija su nauja iškvietimų krūva. Atlikus pradžia () metodas, gija pakeičia būseną iš Nauja į Vykdoma. Jis vykdo Run() metodas kai gija gauna tinkamą laiką jai vykdyti.
Paimkime pavyzdį, kad suprastume, kaip galime sukurti a Java giją išplėsdami gijos klasę:
eilutę ir stulpelį
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(); } }
Išvestis:
Gijos kūrimas įdiegiant paleidžiamą sąsają
„Java“ taip pat galime sukurti giją, įdiegę paleidžiamą sąsają. Paleidžiama sąsaja suteikia mums ir run() metodą, ir start() metodą.
Paimkime pavyzdį, kad suprastume, kaip galime sukurti, pradėti ir paleisti giją naudodami paleidžiamą sąsają.
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'); } }
Išvestis:
Aukščiau pateiktame pavyzdyje mes atliekame kelių sriegių apdorojimą įdiegdami paleidžiamą sąsają. Norėdami sužinoti daugiau apie kelių gijų, paspauskite čia .