Si tu tiens absolument a mettre en pause un thread tant qu'une condition n'est pas remplie, tu peut utiliser un mutex, qui sera débloqué par un autre thread, par exemple celui qui traite tes évenements.
Tu peut considérer les mutex comme des feux, rouge le programme s'arrete, vert il repart...
http://download-llnw.oracle.com/javase/6/docs/api/java/util/concurrent/locks/ReentrantLock.html
Mais bon, ce n'est pas prévu pour ton usage, à la base. C'est plutôt fait pour protéger les accès concurrents à une ressource.
Cela dit, ça fonctionnera...