Методы notify() и notifyAll() используются в Java для управления потоками. Оба метода используются, чтобы пробудить ожидающие потоки. Разница между ними заключается в том, что метод notify() пробуждает только один из ожидающих потоков, тогда как метод notifyAll() пробуждает все ожидающие потоки.
Пример использования метода wait() и notify() для синхронизации потоков в Java:
class Message {
private String message;
private boolean empty = true;
public synchronized String read() {
while(empty) {
try {
wait();
} catch (InterruptedException e) {}
}
empty = true;
notifyAll();
return message;
}
public synchronized void write(String message) {
while(!empty) {
try {
wait();
} catch (InterruptedException e) {}
}
empty = false;
this.message = message;
}
}
В этом примере класс Message имеет два метода, read() и write(). Метод read() ожидает, пока не будет доступно значение сообщения, а метод write() устанавливает значение сообщения. Методы wait() и notifyAll() используются для синхронизации потоков, чтобы потоки не пытались читать сообщения, которых еще нет, или записывать сообщения, когда другой поток еще не закончил чтение текущего сообщения.
1606 вопрос-ответ по Java: https://github.com/DEBAGanov/interview_questions
Tелеграмм канал: https://t.me/DEBAGanov
Мое резюме: https://github.com/DEBAGanov