JavaRush /Курсы /Java Core /Здоровый sleep

Здоровый sleep

Java Core
6 уровень , 6 лекция
Открыта

— Привет, Амиго! Билаабо сегодня расскажет тебе о самом интересном методе при работе с нитями – это метод sleepМетод sleep объявлен как статический метод класса Thread, т.е. он не привязан ни к какому объекту. Цель этого метода, чтобы программа «заснула» на некоторое время. Вот как это работает:

Код Описание
public static void main(String[] args)
{
Thread.sleep(2000);
}
Программа запустится.

Затем замрет на 2 секунды (2 000 миллисекунд)

Затем завершится.

Единственный параметр метода sleep – это время. Время задается в тысячных долях секунды (миллисекундах). Как только нить вызывает этот метод, она засыпает на указанное количество миллисекунд.

— А где это лучше всего использовать?

— Этот метод часто используется в дочерних нитях, когда нужно делать какое-то действие постоянно, но не слишком часто. Смотри пример:

Код Описание
public static void main(String[] args)
{
while (true)
{
Thread.sleep(500);
System.out.println("Tik");
}
}
Программа будет работать вечно – условие продолжения цикла никогда не нарушится.

Вот что программа делает в цикле:
а) поспать полсекунды
б) вывести на экран текст «Tik»

Т.е. дважды в секунду будет выполняться некоторое действие.

— Ух ты, теперь это уже интересно.

— Рад, что тебе понравилось, мой друг Амиго!

— А если я хочу, чтобы какое-то действие выполнялась 100 раз в секунду, что нужно делать?

— Если действие должно выполняться 100 раз в секунду, а в секунде 1000 миллисекунд, значит, действие должно выполняться один раз в 10 миллисекунд.

Если твое действие занимает 2 миллисекунды, то нужно добавить к нему паузу длинной 8 миллисекунд. Вместе они будут выполняться как раз за 10 миллисекунд. И за секунду – как раз 100 раз.

Если же твое действие выполняется почти мгновенно, то поставь паузу (sleep) длиной 10 миллисекунд. Тогда в секунду будет тоже около 100 раз.

— Спасибо, Билаабо.

Комментарии (165)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
SliNe Уровень 28
16 июня 2025
👽
Ioanna Polyak Уровень 28
13 июня 2025
👽
Rhett Caan Уровень 28 Expert
26 марта 2025
👽
KPR500 Уровень 32
28 февраля 2025
Давненько тут комментариев не было...
6aHguTo Уровень 36
24 октября 2024
а как узнать какое время занимает выполнение моей команды? есть какой-нить метод по типу getCommandTime(); ???
Serg Уровень 2
30 октября 2024
System.nanoTime() перед методом и после, затем вычислить разницу.
{Java_Shark} Уровень 36
13 октября 2024
++(156)
Илья Уровень 50
12 октября 2024
155
Kaz Уровень 32
19 августа 2024
у этой длинной сложной лекции всего 152 коммента в обсуждении? Непорядок, добавлю и я свой 153-ий...
ReMilo Уровень 45 Expert
13 сентября 2024
154
Denis Maibach Уровень 32
23 декабря 2024
160
24 января 2025
161
11 января 2024
вообще-то не надо обманывать пользователей, данный код не всегда будет выводить сообщение 2 раза в секунду, иногда сообщение будет выводится только один раз секунду, из-за того что вывод сообщения (или не дай боже еще более тяжелая работа) тоже занимают время и увеличат время каждой итерации 500мс + (время выполнения)
Kirill Уровень 46
17 марта 2024
Я даже больше скажу: этот код вообще не будет работать, поскольку в методе main() никак не обрабатывается проверяемое исключение InterruptedException, объявленое в сигнатуре метода Thread.sleep()
Alex Уровень 28
5 января 2024
Заплати за курс и на каждой странице смотри рекламу другого курса за бОльшие деньги. Любимое.
9 января 2024
🤣🤣🤣🤣
SomeBody098 Уровень 51
6 июня 2024
mrnght Уровень 28
5 сентября 2024
Да ладно вам, за такие копейки я бы и еще больше рекламы вытерпел. Курс стоит каждой монетки.