Новое Распределяем каналы MAX по категориям и территориям. Читать новость

💡 Java: не используй `Thread.sleep()` для ожидания работы

Загружаем изображение…
💡 Java: не используй `Thread.sleep()` для ожидания работы

Thread.sleep() - это просто пауза на заданное время.

Проблема в том, что ты угадываешь:

❌ поток может проснуться слишком рано  
❌ или наоборот, ждать дольше, чем нужно  
❌ polling через sleep() создаёт лишние задержки и проверки

Для координации потоков лучше использовать:

✅ wait() / notify()  
✅ CountDownLatch  
✅ другие примитивы синхронизации из java.util.concurrent

Например:
CountDownLatch done = new CountDownLatch(1);

done.await();      // ждём сигнал
done.countDown();  // работа завершена
А если задача должна выполняться периодически, вместо бесконечного цикла с sleep() лучше взять
ScheduledExecutorService exec =
    Executors.newSingleThreadScheduledExecutor();

exec.scheduleAtFixedRate(
    this::doWork,
    0,
    1,
    TimeUnit.SECONDS
);

Thread.sleep() хорошо подходит для простой задержки.
Для ожидания события и периодических задач в Java есть более точные инструменты.

#Java #Concurrency
Просмотры: 242
Открыть в MAX Сообщить о неточности

Сообщить о неточности

Опишите, что нужно исправить. Если есть источник, добавьте ссылку.

Вы покидаете datool.ru

Ссылка ведёт на внешний сайт. datool.ru не отвечает за его содержимое — проверьте адрес, прежде чем вводить пароли или платёжные данные.

Переход через 10 с

Перейти