thread sleep thread sleep method java with examples
В този урок ще обсъдим метода Thread Sleep () в Java. Ще видим как работи методът Thread.Sleep () с помощта на Примери:
The java.lang.Thread.sleep (дълги мили) method е методът, предоставен от класа Thread, който приспива текущата нишка. Ще посочим времето за сън като аргумент на метода за заспиване.
=> Погледнете тук ръководството за начинаещи Java.
Какво ще научите:
Метод за заспиване на нишки () в Java
Класът Thread на Java предоставя два варианта на метода на заспиване.
Прототипът на двата варианта на метода sleep () е описан по-долу.
# 1) Вариант на метода на съня # 1
Прототип: публичен статичен празен сън (дълъг милис) изхвърля InterruptedException
Параметри: милис => продължителността на времето в милисекунди, за което нишката спи.
Възвръщаема стойност: нищожен
Хвърляния:
- IllegalArgumentException => ако милис е отрицателен
- InterruptException => ако някоя друга нишка прекъсне текущата нишка. Когато възникне това изключение, прекъснатото състояние на нишката се изчиства.
Описание: Тази вариация на метода на заспиване кара текущата нишка да спи или временно спира изпълнението й за дадения брой милисекунди (предоставена в аргумента на метода) Докато спи обаче, нишката не губи монитора или заключва собствеността.
# 2) Вариант на метода на съня # 2
Прототип: публичен статичен празен сън (дълги мили, int nanos) изхвърля InterruptdException
Параметри:
приложение, което ви позволява да шпионирате друг телефон
- милис => продължителността в милисекунди, за която нишката трябва да заспи.
- nanos => допълнителни наносекунди, за които нишката може да заспи. Диапазонът е 0 - 999999.
Върната стойност: нищожен
Хвърляния:
- IllegalArgumentException => ако милис стойността е отрицателна или нано стойност, ако е извън обхвата.
- InterruptException => ако някоя друга нишка прекъсне текущата нишка. Прекъснатото състояние на нишката се изчиства, когато възникне това изключение.
Описание: Този вариант на метода на заспиване кара нишката да го извика да спи или временно да спре изпълнението му за дадения брой милисекунди. (първи аргумент в извикване на метод). Освен това предоставяше и броя наносекунди (втори аргумент в извикване на метод) за сън.
Имайте предвид, че точността и точността на посоченото време зависи от системните таймери и планиращи програми. Когато нишката спи, собствеността на ключалката или монитора не се променя.
Метод на работа на нишка
Винаги, когато една нишка спи или е спряна, това се прави от планиращия. Методът Thread.sleep () комуникира с планировчика на нишки, така че планиращият механизъм може да накара текущата нишка да се промени, за да изчака състоянието за определена продължителност.
След като това определено време приключи, състоянието на нишката се променя на ‘runnable’, за да може да изчака процесора да продължи с изпълнението.
По този начин продължителността на това колко дълго нишката спи зависи от планиращия, а не от метода. Тъй като планировчикът е част от операционната система, архитектурата на ОС също играе роля в промените в състоянието на нишката.
След като видяхме подробно метода Thread.sleep (), трябва да имаме предвид някои от точките, докато използваме този метод.
Указателите включват:
# 1) Методът Thread.sleep () винаги поставя на пауза изпълнението на текущата нишка.
# две) Действителната продължителност, през която нишката спи, зависи от планиращите програми и системните таймери.
Например, за много натоварена система времето за заспиване на нишката може да е по-дълго от определеното, докато за системата, която не е толкова заета, може да е повече или по-малко близо до определено време.
# 3) Докато нишката спи, тя не губи никакви брави или монитори, които е придобила преди сън.
# 4) Текущата нишка, която е в режим на заспиване, може да бъде прекъсната от всяка друга нишка. В този случай се изхвърля “InterruptedException”.
Пример Thread.sleep в Java
Нека сега преминем към пример, който демонстрира метода на заспиване. Тук имаме клас на нишка, който има метод run (). В метода run () извикваме ‘Thread.sleep (1000)’. След това в основната функция създаваме два екземпляра на тази нишка, т.е.две нишки. След това започваме нишките.
В изхода забелязваме, че тъй като и двете нишки се изпълняват, те са планирани една след друга, т.е.когато едната спи, другата работи.
Пример:
class SleepThread extends Thread { //run method for thread public void run() { for(int i=1;i<5;i++) { try { //call sleep method of thread Thread.sleep(1000); }catch(InterruptedException e){System.out.println(e);} //print current thread instance with loop variable System.out.println(Thread.currentThread().getName() + ' : ' + i); } } } class Main{ public static void main(String args()) { //create two thread instances SleepThread thread_1 = new SleepThread(); SleepThread thread_2 = new SleepThread(); //start threads one by one thread_1.start(); thread_2.start(); } }
Изход:
какво е кодът на ключа за сигурност
Когато наблюдаваме изхода, откриваме, че Thread_0 и Thread_1 се редуват да се изпълняват.
Thread.sleep () С отрицателна стойност на времето за заспиване
След това нека демонстрираме друг пример за метода Thread.sleep (). Тук разгледахме специален случай на отрицателна стойност на времето за сън. Програмата е подобна на горната програма, но предвиденото време за заспиване е -500.
Пример:
class SleepThread extends Thread { public void run() { for(int i=1;i<5;i++) { try { //call sleep method with negative value of time Thread.sleep(-500); }catch(InterruptedException e){System.out.println(e);} System.out.println(i); } } } class Main{ public static void main(String args()) { //create two thread instances SleepThread t1=new SleepThread(); SleepThread t2=new SleepThread(); //start the threads one by one t1.start(); t2.start(); } }
Изход:
От изхода можем да видим, че методът е хвърлил „IllegalArgumentException“, тъй като отрицателната стойност на времето за сън не е приемлива.
често задавани въпроси
В # 1) Как работи спящата нишка в Java?
Отговор: Когато sleep () бъде извикан на нишката с определено време в милисекунди, нишката спира изпълнението си. Той се отказва от процесора. По този начин, по време на продължителността, когато нишката е заспала, останалите нишки могат да използват процесора.
В # 2) Какво е yield () и sleep () в нишка Java?
Отговор: Методът на sleep () на нишката кара нишката да се откаже от процесора и да спре изпълнението. Докато тази нишка спи, останалите нишки придобиват CPU. Това се прави от планиращия.
Методът yield () също кара нишката да се откаже от контролера на процесора, когато е извикан, но методът sleep () показва по-определено поведение в сравнение с yield ().
В # 3) Как да спрете нишката на Java да заспи?
Отговор: Спираме нишката на Java да спи, използвайки метода interrupt (). Всяка нишка, която чака или спи, може да бъде прекъсната чрез извикване на метода interrupt () на класа Thread.
В # 4) Можем ли да убием нишка в Java?
Отговор: Не, нишката не е убита в Java. Вместо това нишката е спряна в Java. Нишката е прекратена и след това може да се изключи изящно. Често използваме летливо булево поле, което периодично се проверява за промени в стойностите, за да можем да прекратим нишката.
как да отворите торентен файл на
В # 5) Защо сънят () е статичен метод?
Отговор: Когато извикваме метода sleep (), за да приведем нишката в режим на заспиване, винаги го извикваме с помощта на Thread класа.
Например , Thread.sleep (1000);
Горното повикване работи в контекста на текущата нишка и поставя текущата нишка в режим на заспиване. Никога не извикваме метода, използвайки конкретен екземпляр на нишка. По този начин методът е статичен.
Заключение
В този урок обсъдихме метода за заспиване () на нишки в Java. Методът Sleep () кара текущата нишка, която се изпълнява, да спре изпълнението си за определен период от време, който е предоставен като аргумент на метода за заспиване.
Системният планировчик работи с метода на заспиване, за да постави текущата нишка в състояние на изчакване. Докато нишката спи, тя продължава да притежава ключалките или мониторите, които е придобила. Когато предадем отрицателна стойност на времето за сън към метода на съня, той хвърля ‘IllegalArgumentException’.
Когато предадем валидна стойност на времето за заспиване към метода sleep (), останалите нишки ще изпълнят хода, докато текущата нишка спи.
=> Проверете тук, за да видите A-Z на уроците за обучение по Java тук.
Препоръчително четене
- Многопоточност в Java - Урок с примери
- Многопоточност в C ++ с примери
- Синхронизирано с Java: Какво представлява синхронизация на нишки в Java
- Java нишки с методи и жизнен цикъл
- Java урок за низове | Низови методи на Java с примери
- Как да използвам Java toString метод?
- TreeMap в Java - Урок с примери за TreeMap на Java
- Урок за JAVA за начинаещи: 100+ практически ръководства за Java видео