Въведение в жизнения цикъл на нишката в Java

Конецът преживява множество фази в жизнения цикъл. Като например, нишка влиза в света, започва, бяга и след това отминава. Следващата диаграма обяснява пълния жизнен цикъл на нишката.

  • Конструкторът на нишки създава нишка през ново състояние.
  • Обаждането започва метода в Thread може да го направи чрез състояние за изпълнение.
  • Thread Scheduler относно Java изпълнява тази нишка, когато процесорът получи.
  • Когато нишката ще премине в блокирано състояние, тя ще се стартира отново, защото се връща в състояние за изпълнение.
  • Ако методът на изчакване е посочен като нишка, ще премине в очакване на държавата, той ще премине в състояние за изпълнение, скоро след като ще стане известие в цялата информация, както и методът за уведомяване на всички.
  • Темата завършва, след като методът на изпълнение приключи.

Какво е нишката?

На нивото на операционната система се дефинира нишка. И Java езикът, както и всички останали езици, използва, използва, използва услугата, която се предоставя от Операционната система. От гледна точка на разработчика, нишката е набор от инструкции, които ще напишем нашето приложение и изпълняваме по определен начин. Самото приложение може да се състои от няколко нишки. Различни нишки могат да бъдат изпълнени едновременно. JVM (Java Virtual Machine) работи с няколко нишки. Има нишки за събиране на боклука. Има конци за компилатора Just in Time и други технически нишки.

Състояния на жизнения цикъл на нишката в Java

По-долу са различните състояния на жизнения цикъл на нишката в Java:

1. Ново: Нова нишка започва техния жизнен цикъл в новото състояние. Тя продължава да бъде с това състояние, преди програмата да започне нишката. Освен това той е известен като създадена нишка.

2. Изпълняваща се: След като наскоро може да започне нишката, конецът се превръща в изпълним. Счита се, че нишка с това състояние изпълнява техния процес.

3. Чакане: Понякога, нишката преминава към чакащото около състоянието, въпреки че нишката чака друга нишка, която да изпълни дейност. Нишката преминава, връщайки се в състояние за изпълнение, само ако допълнителна нишка индикира чакащата нишка, която да продължи да работи.

4. Време за изчакване: Подходяща нишка може лесно да прекъсне конкретния период на изчакване, докато състоянието получи определен интервал от време. Нишка с това състояние преминава, връщайки се в състояние за изпълнение, след като този интервал от точки изтича или ако се случи събитието, което наистина чака.

5. Прекратено: Изпълняващата нишка преминава в прекратено състояние, защото изпълнява задачата си или иначе се прекратява.

Как да създадете тема в Java?

Най-основният начин за създаване на нишка в Java е да използвате Runnable Pattern. Първо трябва да създадете екземпляр на интерфейса Runnable, който е много лесен; има само един метод за изпълнение. След това предаваме този случай на конструктора на класа Thread. И тогава просто извикваме метода start () на този обект, създаден с нишка, за да стартираме нова нишка, която ще изпълни задачата, обгърната в нашия Runnable обект.

Така че първо създаваме инстанция на Runnable. Има само един метод за изпълнение, който се нарича метод run (). Това е моделът на Java 7, за да се направи това с екземпляр от анонимен клас. Но също така можем да използваме лямбда израз, за ​​да реализираме Runnable, тъй като в интерфейса на Runnable има само един метод.

Нека създадем конци върху много прости примери

Ще видим какво може да се обърка с условие за състезание, което е с несинхронизиран код, който трябва да бъде синхронизиран и ние ще оправим кода си с помощта на синхронизация. Този първи пример е много прост, той е много основен. Става въпрос само за създаване на задача.

изход:

Задачата е екземпляр на интерфейса Runnable, нека го наречем изпълним и можем да реализираме този интерфейс, използвайки лямбда израз. Тази задача се дава на нова тема и се изпълнява в контекста на тази тема. Така че ние просто ще отпечатаме името на нишката, която изпълнява тази задача. Пускам в … Thread.currentThread () е статичен метод от класа Thread, който връща нишката, изпълняваща текущата задача. И просто трябва да извикаме getName () на този обект на нишката, за да върнем името на нишката. След това, след като създадем екземпляр Thread t = new Thread. Преминаване на този изпълним като параметър. Така че тази тема ще изпълни това парче код. И да го пуснат. t.start () това е метод start (), който трябва да извикаме. Това, което можем също да направим, е да дадем изрично име на тази тема, използвайки t.setName („Моята тема“). И сега можем да изпълним този код. Сега вместо метод за стартиране на повикване (), ние наричаме метода run () и ако изпълним този код, проблемът е, че задачата е изпълнена правилно, но тя не се изпълнява в нишката, която сме създали. Той се изпълнява в основната нишка, която е нишката, изпълняваща основния метод. Така че този метод run () не трябва да се извиква, ако искаме да стартираме нова тема.

изход:

Методи на жизнения цикъл на нишките в Java

Методите, описани от Thread са представени в табл.

Типове данниИмена на метода на нишката
низ

getName ()

Върнете името на тази тема

интполучи приоритет ()

Връща приоритета на нишката

булеваisAlive ()

Тестове дали тази тема все още работи

празнотаприсъединяване()

Изчаква тази тема да умре (прекратява)

празнотатичам ()

Всеки път, когато тази нишка е построена, използвайки индивидуален обект Runnable, след който обикновено се нарича методът за изпълнение на Runnable обект; или иначе казано, този метод няма да се върне. Всеки път, когато класът на нишката може да бъде разширен, както и методът run () е презаписан по време на подклас, тогава се извиква методът over-ridden run ().

празнотаsetName ( Име на низ )

Променя името с тази нишка, за да стане сравнимо с името на аргумента.

статична празнота

сън ( дълги мили ) хвърля Прекъснато / Изключение
Причинява понастоящем изпълняващата нишка да почива
необходимото количество милисекунди.
статична празнотасън ( дълги милиони, int nanos ) хвърля InterruptedException

Това кара настоящата изпълняваща нишка да спи (прекратява изпълнението) за необходимото количество милисекунди, както и конкретното количество наносекунди.

празнотастарт ()

Задейства тези нишки, за да започне изпълнението; виртуалната машина на Java извиква метода на стартиране на тази нишка.

статична празнотадобив ()

Задейства сегашния обект на нишката, за да направи кратка пауза и да позволи изпълнението на допълнителни нишки.

статична нишкаcurrentThread ()

Връща споменаване на текущо изпълняващия обект на нишка.

заключение

  • Лесно е да започнете да използвате конци, изключително трудно да ги схванете.
  • Проектирането на класове, които съдържат методи, които могат да бъдат защитени с конци, е предизвикателство.
  • Прочетете: JavaDoc, за да получите класа java.lang.Thread

Препоръчителен член

Това е ръководство за жизнения цикъл на нишката в Java. Тук обсъждаме какво е нишка? и различни състояния на жизнения цикъл на нишката заедно със създаването на нишки в java. Можете да разгледате и другите ни предложени статии, за да научите повече -

  1. Рамки в Java
  2. Звездни модели в Java
  3. Сливане сортиране в Java
  4. Най-добрите компилатори на Java
  5. Статичен метод в PHP