РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1037 of 1163 menu

Метод sleep

Метод sleep класса TimeUnit приостанавливает выполнение текущего потока на заданное время. Первым параметром метод принимает количество времени, вторым - единицу измерения (наносекунды, микросекунды, миллисекунды, секунды, минуты, часы или дни). В отличие от статического метода Thread.sleep, где время всегда задается в миллисекундах, здесь единица измерения выбирается явно, что делает код более читаемым. Метод выбрасывает исключение InterruptedException, если поток был прерван во время ожидания.

Синтаксис

TimeUnit.UNIT.sleep(time)

Пример

Давайте приостановим поток на 2 секунды:

import java.util.concurrent.TimeUnit; public class Main { public static void main(String[] args) throws InterruptedException { System.out.println("Start"); TimeUnit.SECONDS.sleep(2); System.out.println("End"); } }

Результат выполнения кода (с паузой 2 секунды между строками):

"Start" "End"

Пример

Давайте приостановим поток на 500 миллисекунд:

import java.util.concurrent.TimeUnit; public class Main { public static void main(String[] args) throws InterruptedException { long start = System.currentTimeMillis(); TimeUnit.MILLISECONDS.sleep(500); long end = System.currentTimeMillis(); System.out.println(end - start >= 500); } }

Результат выполнения кода:

true

Пример

Давайте сравним работу с разными единицами измерения. Метод toMillis переводит время в миллисекунды:

import java.util.concurrent.TimeUnit; public class Main { public static void main(String[] args) { System.out.println(TimeUnit.SECONDS.toMillis(1)); System.out.println(TimeUnit.MINUTES.toMillis(1)); System.out.println(TimeUnit.HOURS.toMillis(1)); } }

Результат выполнения кода:

1000 60000 3600000

Пример

Давайте обработаем исключение InterruptedException, которое возникает при прерывании потока во время сна:

import java.util.concurrent.TimeUnit; public class Main { public static void main(String[] args) { Thread thread = new Thread(() -> { try { TimeUnit.SECONDS.sleep(10); System.out.println("Finished"); } catch (InterruptedException e) { System.out.println("Interrupted"); } }); thread.start(); thread.interrupt(); } }

Результат выполнения кода:

"Interrupted"

Смотрите также

  • метод sleep класса Thread,
    который приостанавливает поток в миллисекундах
  • класс TimeUnit,
    который представляет единицы времени
  • метод toMillis,
    который переводит время в миллисекунды
  • метод interrupt,
    который прерывает поток
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить