Похоже, у вас здесь есть логические ошибки:
- В
runMyJob()
вы звоните model.changeStatus(123)
- Это вызывает
notifyObservers()
в Observable
- Это уведомляет наблюдателей, вызывая
MyController.update()
- Затем попытается
join()
в потоке.
Поскольку поток является тем, который вызывает update()
, он пытается соединиться с самим собой, что, очевидно, не будет работать. Я бы хотел, чтобы основной поток просто сделал соединение после начала:
myJob.start();
myJob.join();
Вы также можете установить какое-то значение во время обновления (возможно, volatile int
или AtomicInteger
), которое затем может быть прочитано основным потоком.
Если вы отредактируете свой вопрос, чтобы сообщить нам, чего вы пытаетесь достичь, я исправлю свой ответ, чтобы предоставить некоторые более точные рекомендации.