Večnitnost je funkcija Jave, ki omogoča sočasno izvajanje dveh ali več delov programa za največjo izkoriščenost procesorja. Vsak del takega programa se imenuje nit. Torej so niti lahki procesi znotraj procesa.
Niti je mogoče ustvariti z uporabo dveh mehanizmov:
- Razširitev razreda Thread
- Implementacija Runnable Interface
Ustvarjanje niti z razširitvijo razreda Thread
Ustvarimo razred, ki razširja java.lang.Thread razred. Ta razred preglasi metodo run(), ki je na voljo v razredu Thread. Nit začne svoje življenje znotraj metode run(). Ustvarimo objekt našega novega razreda in pokličemo metodo start(), da začnemo izvajanje niti. Start() prikliče metodo run() na objektu Thread.
Java
// Java code for thread creation by extending> // the Thread class> class> MultithreadingDemo>extends> Thread {> >public> void> run()> >{> >try> {> >// Displaying the thread that is running> >System.out.println(> >'Thread '> + Thread.currentThread().getId()> >+>' is running'>);> >}> >catch> (Exception e) {> >// Throwing an exception> >System.out.println(>'Exception is caught'>);> >}> >}> }> // Main Class> public> class> Multithread {> >public> static> void> main(String[] args)> >{> >int> n =>8>;>// Number of threads> >for> (>int> i =>0>; i MultithreadingDemo object = new MultithreadingDemo(); object.start(); } } }> |
sql ddl ukazi
>
>Izhod
Thread 15 is running Thread 14 is running Thread 16 is running Thread 12 is running Thread 11 is running Thread 13 is running Thread 18 is running Thread 17 is running>
Ustvarjanje niti z implementacijo Runnable Interface
Ustvarimo nov razred, ki implementira vmesnik java.lang.Runnable in preglasi metodo run(). Nato ustvarimo primerek predmeta Thread in za ta objekt pokličemo metodo start().
Java
// Java code for thread creation by implementing> // the Runnable Interface> class> MultithreadingDemo>implements> Runnable {> >public> void> run()> >{> >try> {> >// Displaying the thread that is running> >System.out.println(> >'Thread '> + Thread.currentThread().getId()> >+>' is running'>);> >}> >catch> (Exception e) {> >// Throwing an exception> >System.out.println(>'Exception is caught'>);> >}> >}> }> // Main Class> class> Multithread {> >public> static> void> main(String[] args)> >{> >int> n =>8>;>// Number of threads> >for> (>int> i =>0>; i Thread object = new Thread(new MultithreadingDemo()); object.start(); } } }> |
>
>Izhod
Thread 13 is running Thread 11 is running Thread 12 is running Thread 15 is running Thread 14 is running Thread 18 is running Thread 17 is running Thread 16 is running>
Razred niti v primerjavi z zagonskim vmesnikom
- Če razširimo razred Thread, naš razred ne more razširiti nobenega drugega razreda, ker Java ne podpira večkratnega dedovanja. Toda če implementiramo vmesnik Runnable, lahko naš razred še vedno razširi druge osnovne razrede.
- Osnovno funkcionalnost niti lahko dosežemo z razširitvijo razreda Thread, ker ponuja nekatere vgrajene metode, kot so yield(), interrupt() itd., ki niso na voljo v vmesniku Runnable.
- Uporaba runnable vam bo dala predmet, ki ga lahko delite med več niti.