Sobes.tech
Middle
168

Qual é a diferença entre o método wait() com parâmetro e sem parâmetro?

Resposta da IA

sobes.tech IA

Метод wait() с параметром указывает максимальное время ожидания в миллисекундах. По истечении этого времени поток автоматически пробуждается, даже если условие не выполнилось и метод notify() или notifyAll() не был вызван.

Метод wait() без параметра ожидает неограниченное время, пока не будет вызван notify() или notifyAll() для объекта, на котором был вызван wait().

Метод Параметры Описание
wait() Отсутствуют Ожидает до вызова notify() или notifyAll().
wait(long m) m (миллисекунды) Ожидает максимум m миллисекунд или до вызова notify()/notifyAll().

Пример использования wait(long m):

synchronized (lockObject) {
    while (conditionIsNotMet) {
        try {
            lockObject.wait(5000); // Ждать до 5 секунд
            if (conditionIsNotMet) {
                // Время ожидания истекло, условие не выполнилось
                System.out.println("Время ожидания истекло.");
                break; // Выходим из цикла или предпринимаем другие действия
            }
        } catch (InterruptedException e) {
            Thread.currentThread().interrupt();
            // Обработка прерывания
        }
    }
}