Threads Certificacao

Estou lendo o ultimo capitulo do livro de certificacao da Kathy Sierra,
na parte que explicacao o uso de wait()/notify()/notifyAll()
ela apresentava o seguinte codigo:

public class ThreadA {
    public static void main(String [] args) {
         ThreadB b = new ThreadB();
         b.start();

         synchronized(b) {
                 try {
                        System.out.println("Waiting for b to complete...");
                        b.wait();
                 } catch (InterruptedException e) {}
         }
         System.out.println("Total is: " + b.total);
    }
}

class ThreadB extends Thread {
     int total;

     public void run() {
             synchronized(this) {
                   for(int i=0;i<100;i++) {
                           total += i;
                   }
                   notify();
             }
     }
}

ela nao fala nada sobre “possíveis falhas” nesse codigo… mas ao meu ver o que que garante que o metodo wait() vai SEMPRE executar antes de notify?[/b]