Я пытаюсь смоделировать цифровые часы в Java, используя wait () и notify (). Если я запускаю следующий код (ну, на самом деле другой очень простой класс GUI для отображения часов), я получаю исключение Illegal Monitor. Я новичок в Java, так что, вероятно, я неправильно использовал wait () ....
public class JDigitalClock extends JLabel implements Runnable {
private static final long serialVersionUID = 1L;
private boolean stopped = false;
DateTimeFormatter dtf;
LocalDateTime now;
public JDigitalClock() {
dtf = DateTimeFormatter.ofPattern("HH:mm:ss");
now = LocalDateTime.now();
setText(dtf.format(now));
setFont(new Font("Sans Serif", Font.PLAIN, 70));
setHorizontalAlignment(SwingConstants.CENTER);
}
@Override
public void run() {
while (true) {
sleep();
while (getStopped())
try {
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
now = LocalDateTime.now();
setText(dtf.format(now));
}
}
public void setStopped(boolean stopped) {
this.stopped = stopped;
if (!stopped)
notify();
}
public boolean getStopped() {
return this.stopped;
}
public void sleep() {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}