java .lang.IllegalMonitorStateException: объект не заблокирован перед потоком - PullRequest
0 голосов
/ 13 апреля 2020

Во-первых, я новичок в темах в java, поэтому, если я что-то пропустил, просто скажите. У меня есть программа таймера. В нем я запускаю тему, которую я бы хотел notify() и wait(). Я получил эту ошибку и посмотрел ее здесь. Я нашел тот же вопрос, и верхний ответ дал пример. Я попытался реализовать это, однако я все еще получаю ошибку. В ответе говорится, что вы должны создать очередь для добавления объекта. Любые идеи и помощь приветствуется. Вот код, где я пытаюсь notify() и wait().

 final Queue<Thread> queue = new Queue<Thread>() {...}
 button2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (button2.getText().equals("Continue")) {
                    button2.setText("Pause");
                    synchronized (thread) {
                        queue.add(thread[0]);
                        thread[0].notify();
                    }
                }
                else {
                    button2.setText("Continue");
                    try {
                        synchronized (thread) {
                            while (queue.peek() == null) {
                                thread[0].wait();
                            }
                            thread[0] = queue.remove();
                        }
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        });

И поток:

final Thread[] thread = {new Thread() {
            @Override
            public void run() {
                while (button1.getText().equals("Clear")) {
                    boolean cont = button2.getText().equals("Pause");
                    long time = timer(cont, prev, start[0]);
                    update_label(time);
                }
            }
        }};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...