Итак, вот ваше решение.Ответ уже был в StackOverflow.
Чтобы вызвать wait (), notify () или notifyAll () для объекта, вы должны сначала иметь монитор объекта, для которого вы хотите вызвать метод, поэтомув вашем случае в runnable это будет следующим образом:
Runnable runnable = new Runnable() {
public void run() {
// wait(); This call wouldn't work
syncronized (this) {
wait(); // This call will work
}
}
};
Для уведомления о том, что runnable у вас также должен быть монитор
// runnable.notifyAll(); this call will not work
syncronized (runnable) {
runnable.notifyAll(); // this call will work
}