o método wait() e notify() seria métodos que possibilita as Threads se comunicarem …o método wait() serve para a thread naum ficar ociosa (dentro do while) …entaum coloca ela em espera para outra thread poder executar.
Vamus supor que um thread1 faça um wait() …ele ta esperando uma outra thread, a thread2 ta executando dai ela para por algum motivo (slice-timing) e dai notifica a thread1 que ela pode retornar oq ela estava fazendo de onde ela parou.
é uma forma de comunicação entre threads…para que elas naum fiquem ocupando processamento com algo inútil (ficar dentro de um while esperando algum evento)…
o notifyAll() serve para notificar todas as threads que estão no pool esperando por alguma notificação !!