Prije uvođenja koncept niti , nismo mogli pokrenuti više od jednog zadatka paralelno. Bio je to nedostatak, a da bi se taj nedostatak uklonio, Koncept niti je uveden.
A Nit je vrlo lagan proces, ili možemo reći najmanji dio procesa koji omogućuje programu da radi učinkovitije pokretanjem više zadataka istovremeno.
statička ključna riječ u Javi
Za obavljanje kompliciranih zadataka u pozadini koristili smo se Koncept niti u Javi . Svi se zadaci izvršavaju bez utjecaja na glavni program. U programu ili procesu, sve niti imaju svoju zasebnu stazu za izvršenje, tako da je svaka nit procesa neovisna.
Još jedna prednost korištenja nit je da ako nit dobije iznimku ili pogrešku u vrijeme svog izvođenja, to ne utječe na izvođenje drugih niti. Sve niti dijele zajedničku memoriju i imaju vlastiti stog, lokalne varijable i programski brojač. Kada se više niti izvodi paralelno u isto vrijeme, ovaj proces je poznat kao Višenitnost .
Na jednostavan način, nit je:
- Značajka pomoću koje možemo obavljati više aktivnosti unutar jednog procesa.
- Lagani proces.
- Niz izvršenih naredbi.
- Ugniježđeni niz poziva metoda.
Model navoja
Kao i proces, nit postoji u nekoliko stanja. Ova stanja su sljedeća:
1) Novo (spremno za rad)
Nit je unutra Novi kada dobije CPU vrijeme.
2) Trčanje
Nit je unutra a Trčanje stanje kada je pod ovrhom.
3) Suspendiran
Nit je u Suspendiran stanje kada je privremeno neaktivan ili u izvršenju.
4) Blokirano
koji su mjeseci u q3
Nit je u Blokiran stanje kada čeka resurse.
5) Raskinuto
Nit dolazi u ovo stanje kada u bilo kojem trenutku odmah zaustavi svoje izvođenje.
Stvaranje niti
Nit se stvara ili 'stvaranjem ili implementacijom' Pokretljivo sučelje ili proširenjem Klasa niti . Ovo su jedina dva načina na koja možemo stvoriti nit.
Uronimo u detalje oba ova načina stvaranja niti:
Klasa niti
A Klasa niti ima nekoliko metoda i konstruktora koji nam omogućuju izvođenje raznih operacija na niti. Klasa Thread proširuje Objekt razreda. The Objekt klasa implementira Pokretljiv sučelje. Klasa niti ima sljedeće konstruktore koji se koriste za izvođenje raznih operacija.
Pokretljivo sučelje (metoda run())
Runnable sučelje mora biti implementirano od strane one klase čije su instance namijenjene za izvođenje niti. Pokretljivo sučelje daje nam trčanje() metoda za izvođenje akcije za nit.
metoda start().
Metoda se koristi za pokretanje niti koju smo novo stvorili. Pokreće novu nit s novim pozivnim nizom. Nakon izvršenja početak() metoda, nit mijenja stanje iz New u Runnable. Izvršava run() metoda kada nit dobije točno vrijeme da je izvrši.
ograničenja e-bankarstva
Uzmimo primjer da shvatimo kako možemo stvoriti a Java nit proširenjem klase Thread:
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(); } }
Izlaz:
Stvaranje niti implementacijom runnable sučelja
U Javi također možemo stvoriti nit implementacijom sučelja koje se može izvoditi. Sučelje koje se može izvoditi pruža nam i metodu run() i metodu start().
Uzmimo primjer da bismo razumjeli kako možemo stvoriti, pokrenuti i pokrenuti nit pomoću sučelja koje se može izvoditi.
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'); } }
Izlaz:
U gornjem primjeru izvodimo Multithreading implementacijom runnable sučelja. Da biste saznali više o višenitnosti, kliknite ovdje .