Threads em Servlet

6 respostas
luciano2

Ola pessoal, estou tentando rodar várias threads em um servlet, mas o meu servlet está esperando que a primeira thread termine para continuar a execução.
Existe alguma restrição quanto a execução de threads dentro de um servlet?

6 Respostas

luciano2

Eu iniciei a implementação tentando iniciar as threads dentro da minha classe de negócio,
mas da mesma forma apenas uma thread é inicia e a instância da minha classe de negócio aguarda a thread terminar para continuar a execução.

Decide utilizar JMS criando uma fila no JBoss, eu coloco as atividades na fila e meu MDB vai se encarregar de executar as atividades em paralelo.

alguem já passou por um problema desse tipo e tem uma solução melhor?

luciano2

Foi resolvido utilizando o ExecutorService, sincronizando o fim da thredPrinciapal com o fim do executor para garantir a transação.

ogubas

amigo, você pode me ajudar. estou com um problema parecido.
tem como mostrar com você fez pra resolver?
valeu!

luciano2

Posso sim fala ae, qual é o seu problema.

ogubas

eu tenho um servlet que recebe as requisições do client e grava as transações num HashMap de outra classe, como se fosse uma fila de transações e ela fica ali até receber uma confirmação do client para ser grava em banco de dados. e por isso eu fiz um thread para limpar essa fila quando não receber a confirmação do client depois de um tempo X. o problema é que se eu coloco ela pra rodar no servlet, ela não executa o servlet enquanto o thread não termina de executar. eu precisava que os dois executassem “simultaneamente”.

ogubas

já consegui resolver… coloquei a thread pra executar no init() do servlet. também estava implementando errado a classe da Thread (em vez de colocar o método de limpeza implementado no run(), estava colocando no construtor da classe. de qualquer forma, valeu pela atenção!

Criado 29 de junho de 2011
Ultima resposta 6 de jul. de 2012
Respostas 6
Participantes 2