У меня проблема с пониманием этих методов, а также переменной empty:
private String message;
private boolean empty = true;
public synchronized String read() {
while (empty) {
try {
wait();
} catch (InterruptedException e) {}
}
empty = true; // i mean this line
notifyAll();
return message;
}
public synchronized void write(String message) {
while (!empty) {
try {
wait();
} catch (InterruptedException e) {}
}
empty = false; // and this line
this.message = message;
notifyAll();
}
Во-первых, я не мог понять wait() и notifyAll(), а во-вторых, почему после цикла while в read() значение empty равно true , а почему не ложь? то же самое с write(), почему не true после цикла while?
Извините, если мой язык плохой, я не носитель языка. заранее спасибо
empty
было переименовано вmessageConsumed
. Это делает его более ясным? - person VGR   schedule 17.04.2020write
должен ждать, пока сообщение будет прочитано. После прочтения логическое поле устанавливается в false, чтобы указать, что новое сообщение доступно для чтения. - person VGR   schedule 17.04.2020