Въведение в жизнения цикъл на нишката в 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. Можете да разгледате и другите ни предложени статии, за да научите повече -
- Рамки в Java
- Звездни модели в Java
- Сливане сортиране в Java
- Най-добрите компилатори на Java
- Статичен метод в PHP