Клас потоку - це клас, який в основному є потоком виконання програм. Він присутній у пакеті Java.lang. Клас потоку містить сон() метод. Існує два перевантажені методи методу Sleep(), присутні в класі потоку, один з одним аргументом, а інший з двома аргументами. Метод sleep() використовується для зупинки виконання поточного потоку (незалежно від того, який може виконуватися в системі) на певний проміжок часу, і після закінчення цього часу потік, який виконується раніше, починає виконуватися знову.
Важливий момент щодо методу Thread.sleep():
- Метод Щоразу, коли виконується функція Thread.sleep(), вона завжди призупиняє виконання поточного потоку.
- Якщо будь-який інший потік переривається, коли потік сплячий, буде викинуто InterruptedException.
- Якщо система зайнята, то фактичний час сну потоку буде більшим у порівнянні з тим, що було передано під час виклику методу сну, а якщо система має менше навантаження, то фактичний час сну потоку буде близьким до того, що пройшло, поки виклик методу sleep().
Синтаксис методу Sleep().
У Java Thread є 4 варіанти методу sleep(). Це:
алфавіт до числа
1. public static void sleep(long millis)throws InterruptedException 2. public static void sleep(long millis)throws IllegalArguementException 3. public static void sleep(long millis, int nanos)throws InterruptedException 4. public static void sleep(long millis, int nanos)throws IllegalArguementException>
Параметри, передані в методі Thread.Sleep().
- мілісекунди: тривалість часу в мілісекундах, протягом якого потік буде спати. nanos: це додатковий час у наносекундах, протягом якого ми хочемо, щоб потік перейшов у режим сну. Він коливається від 0 до 999999.
Тип повернення методу Sleep(): Вона не повертає жодного значення, тобто тип повернення функції сну недійсний.
Метод сну з одним параметром є нативним методом, тобто реалізація цього методу виконується іншою мовою програмування, а інший метод із двома параметрами не є нативним методом, тобто його реалізація виконується на Java. Обидва методи сну є статичними, тобто ми можемо отримати до них доступ за допомогою класу Thread. Обидва методи створюють перевірений виняток, тобто ми можемо обробити виняток або за допомогою ключового слова throws, або за допомогою блоку try and catch.
Ми можемо використовувати метод Thread.Sleep() для будь-якого потоку, тобто ми можемо робити це з основним потоком або будь-яким іншим потоком, який ми створюємо програмно.
1. Використання методу Thread.Sleep() для основного потоку
Java
// Java Program for sleeping the main thread.> import> java.io.*;> import> java.lang.Thread;> class> GFG {> >public> static> void> main(String[] args)> >{> >// we can also use throws keyword followed by> >// exception name for throwing the exception> > >try> {> >for> (>int> i =>0>; i <>5>; i++) {> > >// it will sleep the main thread for 1 sec> >// ,each time the for loop runs> >Thread.sleep(>1000>);> > >// printing the value of the variable> >System.out.println(i);> >}> >}> >catch> (Exception e) {> > >// catching the exception> >System.out.println(e);> >}> >}> }> |
>
>Вихід
перетворення цілого числа в рядок
0 1 2 3 4>
2. Використання методу Thread.Sleep() для спеціального потоку
Java
карта java
// Java Program for sleeping the custom thread.> import> java.io.*;> import> java.lang.Thread;> class> GFG>extends> Thread {> >public> void> run()> >{> >// thread 0> >// we can also use throws keyword followed by> >// exception name for throwing the exception> >try> {> >for> (>int> i =>0>; i <>5>; i++) {> > >// it will sleep the main thread for 1 sec> >// ,each time the for loop runs> >Thread.sleep(>1000>);> > >// This Thread.sleep() method will sleep the> >// thread 0.> >// printing the value of the variable> >System.out.println(i);> >}> >}> >catch> (Exception e) {> > >// catching the exception> >System.out.println(e);> >}> >}> >public> static> void> main(String[] args)> >{> >// main thread> >GFG obj =>new> GFG();> >obj.start();> >}> }> |
>
>Вихід
0 1 2 3 4>
3. IllegalArguementException, коли час сну від’ємний
Java
.04 як дріб
// Java Program for showing how exception can occur if we> // pass the negative timeout value.> import> java.io.*;> import> java.lang.Thread;> class> GFG {> >public> static> void> main(String[] args)> >{> >// we can also use throws keyword followed by> >// exception name for throwing the exception> > >try> {> >for> (>int> i =>0>; i <>5>; i++) {> > >// this will throw the> >// IllegalArgumentException> >Thread.sleep(->100>);> > >// printing the value of the variable> >System.out.println(i);> >}> >}> >catch> (Exception e) {> > >// catching the exception> >System.out.println(e);> >}> >}> }> |
>
>Вихід
java.lang.IllegalArgumentException: timeout value is negative>