Fila de Thread

Pessoal,

tenho um tarefa que vai buscar dados no banco que precisa ser realizada em uma thread. Tenho um campo de texto que vai lançar esta tarefa sempre que for atualizado.

O problema é seguinte:

  1. apenas uma thread por vez pode executar esta tarefa para uma dada atualização do campo de texto
  2. se, enquanto uma busca estar sendo realizada, uma outra busca deve esperar a primeira busca terminar
  3. a requisição de uma terceira busca deve cancelar a segunda, e então esperar a primeira busca terminar

Em outras palavras, apenas uma thread por vez, e ultima solicitação que chegar deve remover quem estiver na fila e esperar a thread atual terminar

Existe maneira de implementar isso usando algum recurso de gerenciamento já existe na API do java ?

Olá ewylba

Para o problema de apenas um thread por vez, eu acho que a solução seja usar métodos (ou blocos, se preferir) sincronizados.
http://download.oracle.com/javase/tutorial/essential/concurrency/syncmeth.html

Sobre [quote]3) a requisição de uma terceira busca deve cancelar a segunda, e então esperar a primeira busca terminar [/quote] não entendi muito bem essa parte