"Escutar" porta pop3 para disparar evento

Boa tarde, galera do guj!

Estou com um problema e, embora tenha lido muita coisa sobre Observer, não consegui resolver.

Seguinte, eu tenho uma aplicação que é controlada por threads.
A cada start, um método é disparado e efetua a leitura de emails de uma determinada caixa.
Após a leitura, cada mensagem é lida e identificada, plea flag, se é nova ou antiga.

O problema é que, desta forma, caso a thread “durma” por 30 segundos e alguém entre na caixa e leia os emails, eu perco a flag e os emails que entraram nesse intervalo e foram lidos passam batidos pela leitura do método.

Sei que é possível “esperar” que um email seja recebido e, então, fazer o meu método funcionar, porém, não tenho idéia de como faria isto.

Se alguém puder me dar um caminho, uma dica ou mesmo se já passou por algo semelhante e puder colaborar, será de grande ajuda.

Assim que a solução estiver completa, pretendo disponibilizar o código para a comunidade e é só disto que estou precisando.

Valeu galera, abraços.

Dando uma pesquisada mais aprofundada, achei este link http://www.inf.u-szeged.hu/~bilickiv/h_op/jegyzetek/client_socket.html neste tópico http://www.guj.com.br/java/129991-alerta-de-e-mail-usando-java.
Quando chegar em casa irei testar, mas, ao que me parece, ele faz o que eu preciso.

Se alguém tiver alguma coisa mais específica ou já implementou este código e puder me dar um feedback, eu agradeço.