Есть поток реализованный следующим образом, при создании потока isRun=true, при выполнении определённых действий он зацикливается на sleep(), до того как изменится переменная isRun. Вопрос заключается в том, возможно ли это организовать без sleep()?. Так как много ресурсов отнимает поток во время этого зацикливания.
class UpdateThread extends Thread {
@Override
public void run() {
while (isRun) {
// выполняю определённые действия
isRun=false;
while (!isRun){ // зацикливаю поток, до внешнего изменения переменной
try {
sleep(100);
} catch (InterruptedException e) {
return;
}
}
}
}
Из официальной документации:
public synchronized void guardedJoy() {
// This guard only loops once for each special event, which may not
// be the event we're waiting for.
while(!joy) {
try {
wait();
} catch (InterruptedException e) {}
}
System.out.println("Joy and efficiency have been achieved!");
}
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники