Есть поток реализованный следующим образом, при создании потока 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!");
}
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости