Пре увођења концепција нити , нисмо могли да покренемо више од једног задатка паралелно. То је био недостатак, и да би се уклонио тај недостатак, Тхреад Цонцепт је уведен.
А Тхреад је веома лаган процес, или можемо рећи најмањи део процеса који омогућава да програм ради ефикасније покретањем више задатака истовремено.
стол од латекса
Да бисмо обављали компликоване задатке у позадини, користили смо Концепт нити у Јави . Сви задаци се извршавају без утицаја на главни програм. У програму или процесу, све нити имају своју засебну путању за извршење, тако да је свака нит процеса независна.
Још једна предност коришћења конац је да ако нит добије изузетак или грешку у време свог извршавања, то не утиче на извршавање других нити. Све нити деле заједничку меморију и имају сопствени стек, локалне променљиве и програмски бројач. Када се више нити извршава паралелно у исто време, овај процес је познат као Мултитхреадинг .
На једноставан начин, нит је:
- Функција кроз коју можемо да извршимо више активности у оквиру једног процеса.
- Лагани процес.
- Низ извршених изјава.
- Угнежђени низ позива метода.
Тхреад Модел
Баш као и процес, нит постоји у неколико стања. Ове државе су следеће:
1) Ново (спремно за покретање)
Нит је унутра Нова када добије ЦПУ време.
2) Трчање
Нит је унутра а Трчање навести када је у извршењу.
повезивање базе података јава
3) Суспендован
Нит је у Суспендед стање када је привремено неактиван или у току извршења.
4) Блокирано
Нит је у Блокирано држава када чека ресурсе.
5) Раскинут
Нит долази у овом стању када у било ком тренутку одмах заустави своје извршење.
Креирање нити
Нит се креира или 'креирањем или имплементацијом' Руннабле Интерфаце или проширењем на Тхреад цласс . Ово су једина два начина на која можемо креирати нит.
Хајде да заронимо у детаље оба ова начина креирања нити:
Тхреад Цласс
А Тхреад цласс има неколико метода и конструктора који нам омогућавају да изводимо различите операције на нити. Класа Тхреад проширује Објекат класа. Тхе Објекат класа спроводи Руннабле интерфејс. Класа нити има следеће конструкторе који се користе за извођење различитих операција.
Интерфејс који се може покренути (метод рун())
Интерфејс Руннабле мора бити имплементиран од стране оне класе чије инстанце треба да се извршавају од стране нити. Интерфејс који се може покренути нам даје трцати() метод за извођење радње за нит.
старт() метода
Метод се користи за покретање нити коју смо ново креирали. Почиње нову нит са новим стеком позива. Након извршења почетак() метода, нит мења стање из Ново у Руннабле. Извршава рун() метода када нит добије право време да је изврши.
Узмимо пример да разумемо како можемо да креирамо а Јава нит проширењем класе Тхреад:
ТхреадЕкампле1.јава
// 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(); } }
Излаз:
Креирање нити имплементацијом интерфејса који се може покренути
У Јави, такође можемо да креирамо нит имплементацијом интерфејса који се може покренути. Интерфејс који се може покренути пружа нам и метод рун() и метод старт().
Узмимо пример да разумемо како можемо да креирамо, покренемо и покренемо нит користећи интерфејс који се може покренути.
ТхреадЕкампле2.јава
јава претворити инт у стринг
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'); } }
Излаз:
У горњем примеру, ми изводимо вишенитност имплементацијом интерфејса који се може покренути. Да бисте сазнали више о вишенитности, кликните овде .