Метод sleep
Метод sleep класса Thread приостанавливает выполнение текущего потока на указанное время. В первом параметре мы передаем количество миллисекунд, на которое нужно остановить поток. Второй параметр необязательный и задает дополнительное количество наносекунд (от 0 до 999999). Метод может выбросить исключение InterruptedException, если поток был прерван во время ожидания.
Синтаксис
Thread.sleep(millis)
Thread.sleep(millis, nanos)
Пример
Давайте приостановим выполнение потока на 1000 миллисекунд (1 секунду) и выведем сообщение до и после паузы:
public class Main
{
public static void main(String[] args)
{
System.out.println("Start");
try
{
Thread.sleep(1000);
}
catch (InterruptedException e)
{
System.out.println("Thread was interrupted");
}
System.out.println("End");
}
}
Результат выполнения кода:
"Start"
"End"
Пример
Давайте приостановим поток на 500 миллисекунд и 500000 наносекунд:
public class Main
{
public static void main(String[] args)
{
System.out.println("Before sleep");
try
{
Thread.sleep(500, 500000);
}
catch (InterruptedException e)
{
System.out.println("Thread was interrupted");
}
System.out.println("After sleep");
}
}
Результат выполнения кода:
"Before sleep"
"After sleep"
Пример
Давайте прервем спящий поток из другого потока и обработаем исключение:
public class Main
{
public static void main(String[] args)
{
Thread thread = new Thread(() -> {
try
{
System.out.println("Thread is going to sleep");
Thread.sleep(5000);
System.out.println("Thread woke up");
}
catch (InterruptedException e)
{
System.out.println("Thread was interrupted");
}
});
thread.start();
try
{
Thread.sleep(1000);
}
catch (InterruptedException e)
{
System.out.println("Main thread was interrupted");
}
thread.interrupt();
}
}
Результат выполнения кода:
"Thread is going to sleep"
"Thread was interrupted"
Смотрите также
-
метод
interrupt,
который прерывает поток -
метод
join,
который ожидает завершения потока -
метод
yield,
который уступает процессор другим потокам -
метод
currentThread,
который возвращает текущий поток