есть ли в java функция «блокировать до тех пор, пока условие не станет истинным»?

Я пишу поток слушателя для сервера, и в данный момент я использую:

while (true){
    try {
        if (condition){
            //do something
            condition=false;
        }
        sleep(1000);

    } catch (InterruptedException ex){
        Logger.getLogger(server.class.getName()).log(Level.SEVERE, null, ex);
    }
}

В приведенном выше коде у меня возникают проблемы с функцией запуска, которая потребляет все время процессора. зацикливание. Функция сна работает, но кажется временным исправлением, а не решением.

Есть ли какая-нибудь функция, которая будет блокироваться, пока переменная 'condition' не станет 'true'? Или постоянный цикл - это стандартный метод ожидания, пока значение переменной не изменится?

66
задан Alex Weitz 8 June 2016 в 04:42
поделиться