Ajuda

Gostaria de saber se alguém conhece algum objeto ou alguma API que ajude para desenvolver uma parte de um sistema.
A regra é a seguinte:

  • Tenho que ter um objeto aonde ficariam guardados dados do banco, eu estava pensando em um ArrayList, sendo que este objeto iria ser acessado por várias threads, que iram pegar os dados e enviar os mesmo por socket, recebendo a resposta do servidor este dado, que se encontrava dentro de um objeto( um list ), teria que ser removido. E as threads não podem pegar dados iguais.

nao entendi muito bem o que vc quer…mas acho que um map daria pra fazer isso…

Pelo que eu entendi, cada thread vai pegar a determinada informação e enviar para o servidor.
Acho que uma fila sincronizada seria interessante para esse caso.

Vou tentar explicar melhor.
Faço um select no banco, tenho várias linhas retornadas, essas linhas ficam em um objeto, como um list ou um map, este objeto vai ser acessado por várias threads ao mesmo tempo, eu queria q este objeto me garantisse que não iria mandar para as threads linhas repetidas e que não pudesse passar de um limite de linhas pré-definidas anteriormente.
E quando as threads acabarem de processsar os dados de uma determinada linha eu possa matar ele do list ou do map.
Ficou melhor?

Vc está falando do ArrayBlockingQueue? Mas vc não acha que iria ficar meio lento? E tem como tirar ele da lista só quando ele for processado?

Você precisa ter uma classe que seja um “porteiro” para esse list, map, queue, priority queue, ou seja lá o que for.
Esse “porteiro” deve dispor de um método para obter o próximo dado, e um método para eliminar um determinado dado que já foi processado.

De qualquer maneira, é sempre bom dar uma olhada nesta página:

http://java.sun.com/javase/6/docs/api/java/util/concurrent/package-summary.html

e ver qual das classes atende a seus requisitos.

essa consulta do banco retorna dados de um só objeto?

se for de um só objeto é melhor usar List se nao usa map!

limite de linhas pré-definidas?como assim? é um tamanho da Lista?

o lance de tirar a linha do list quando terminar…blz…mas vc poderia retirar assim que a thread pega-la para processar vc retira da lista…

Mas então este “proteiro” teria que ser feito na “mão”.

sim…acho que seria um metodo sychronized…