Рубрики
Без рубрики

ява.ланг.ArrayIndexOutOfBoundsException Thread.sleep() в Java – Спящий поток Java

Поток.спите на java. Пример сна потока Java, метод сна в классе потока java, пример кода Thread.sleep(2000), thread.sleep(5000), основной поток сна

Автор оригинала: Pankaj Kumar.

Поток.спящий режим на Java

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

Существует еще один перегруженный метод sleep(длинные миллисекунды, в наносекундах) , который можно использовать для приостановки выполнения текущего потока на указанные миллисекунды и наносекунды. Допустимое значение наносекунды находится в диапазоне от 0 до 999999.

Пример сна потока Java

Вот простая программа, в которой Thread.sleep() используется для приостановки выполнения основного потока на 2 секунды.

Вот простая программа, в которой || Thread.sleep() || используется для приостановки выполнения основного потока на 2 секунды.

package com.journaldev.threads;

public class ThreadSleep {

    public static void main(String[] args) throws InterruptedException {
        long start = System.currentTimeMillis();
        Thread.sleep(2000);
        System.out.println("Sleep time in ms = "+(System.currentTimeMillis()-start));
        
    }

}

Если вы запустите вышеуказанную программу, вы заметите, что время ожидания потока, которое она печатает, немного превышает 2000. Это вызвано тем, как работает режим сна потока и специфичной для операционной системы реализацией планировщика потоков.

Важные моменты сна потока Java

  1. Это всегда приостанавливает выполнение текущего потока.
  2. Фактическое время, в течение которого поток спит перед пробуждением и началом выполнения, зависит от системных таймеров и планировщиков. Для тихой системы фактическое время сна близко к указанному времени сна, но для занятой системы оно будет немного больше.
  3. Спящий поток не теряет никаких мониторов или блокировок, которые приобрел текущий поток.
  4. Любой другой поток может прервать текущий поток в спящем режиме, в этом случае возникает исключение InterruptedException.

Как Работает Режим Сна Потоков

Функция Thread.sleep() взаимодействует с планировщиком потоков, чтобы перевести текущий поток в состояние ожидания на указанный период времени. По истечении времени ожидания состояние потока изменяется на работоспособное состояние и ожидает, пока процессор продолжит выполнение. Таким образом, фактическое время, в течение которого текущий поток спит, зависит от планировщика потоков, который является частью операционной системы.