Назад к вопросам
Junior
74
questionbank

Что означает 'усыпить' поток в Java?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Приостановить выполнение текущего потока на определенный промежуток времени с помощью метода Thread.sleep().

// Пример использования Thread.sleep
try {
    Thread.sleep(1000); // Приостановка выполнения потока на 1000 миллисекунд (1 секунда)
} catch (InterruptedException e) {
    Thread.currentThread().interrupt(); // Восстанавливаем флаг прерывания
}

Ключевые моменты:

  • Thread.sleep(long millis) / Thread.sleep(long millis, int nanos): Статический метод класса Thread.
  • Перевод в состояние TIMED_WAITING: Поток, вызывающий sleep(), переходит в состояние TIMED_WAITING и не потребляет процессорное время.
  • Гарнитурный таймер: Реализация зависит от операционной системы, время сна не гарантируется точно.
  • Не освобождает мониторы: Если поток владеет монитором, он его не освобождает при вызове sleep().
  • Прерывание: Метод sleep() может быть прерван вызовом interrupt() на спящем потоке, что вызовет InterruptedException.

Это позволяет управлять выполнением потоков и предоставлять время другим потокам.