Controle de fila de processos

Senhores,

Preciso criar uma fila para processar registros que estao gravados em um banco de dados.

Tenho uma tabela que recebe varios inserts por segundo e esta tabela tem um campo ativo com o valor 0 por default.
Preciso criar um processo “batch” que leia um numero X de processos, execute um-a-um e ao final atualize o campo ativo=1 para que ele nao mais seja processado.
O problema que encontro eh como controlar a fila. Se eu definir, por exemplo, que vou processar 100 registros simultaneamente nao posso esperar para processar novos registros apenas quando esses 100 terminarem (a preformance seria muito ruim visto que o tempo de cada processo pode variar). Assim que um processo terminar (ou um numero Y de processos) quero colocar mais registros na fila sem processar um mesmo registro mais de uma unica vez.

Alguem pode me dar uma luz em como fazer isso ?

Obrigado,
Gustavo

Consulte as classes do pacote java.util.concurrent para ver se alguma delas satisfaz a seus requisitos.

Sua flag “ativo” poderia ter uma outra opção de valor que diria que está sendo processado, por exemplo -1. Assim quando o batch for escolher ele só deverá pegar os que tiverem valor 0, e sempre que ele pegar o 100 que deverão ser executados, ele antes faz um update colocando valor -1.

Uma pergunta, se esse procedimento fosse assincrono, esse seria um caso para JMS?

Li pouca coisa sobre JMS por isso da pergunta …

Eu iria na dica do Thingol.

Consulte a classe Executors, em especial o método newFixedThreadPool().

http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/Executors.html

Talvez seja interessante para você pesquisar também sobre a classe CompletionService, do mesmo pacote.

Valeu pela ajuda. Vou dar uma estudada e qualquer coisa posto os resultados.