Ola pessoal.
tenho um problema e, como sou iniciante em java, não consegui pensar um jeito para resolve-lo:
Preciso disparar 5 threads a partir de um servlet. Porém como qualquer outro acesso (por outro usuário, por exemplo) ao mesmo servlet causaria 5 outras requisições às mesmas 5 threads, eu gostaria de identificar a chamada, ou seja, receber (no servlet) apenas o resultado gerado pelas mesmas threads lançadas.
Alguém já passou por este problema? Existe algum padrão de projeto para isso?
Muito grato,
Rogério
Só um comentario …
pela especificação o certo é não utilizar threads em J2EE
mas da uma olhda na API THREAD em .:
http://java.sun.com/j2se/1.4.2/docs/api/index.html
Antes de responder a sua pergunta preciso saber…
o que vc faz com essas 5 threads ???
quando alguém está querendo fazer algo muito incomum, a chance de estar errado é grande.
não se usa thread com servlets pois o resultado gerado pelas thread não pode ser passado (de forma fácil) para o usuário, já que a sua request irá terminar e as thread vão continuar rodando.
explica direito o seu sistema e porque você quer criar 5 threads…
se não tiver outra maneira você pode colocar um variável de identificação na sua thread com algum ID do usuário que fez a request original.
Olá.
antes de mais nada mto obrigado pela ajuda.
Não uso J2EE. Uso um framework proprietário da empresa, que tem requisições disparadas através de chamadas ao IIS. Para cada requisição, é feita a chamada a uma classe (que tem uma página atrelada a ela). Esta é apenas a camada View e não deve conter lógica do negócio.
Na instalação usamos este framework para acessar programas no Mainframe, que devolvem informações num objeto derivado de Map (ou hashmap nao tenho certeza agora) com ocorrencias que devem ser dispostas no html.
Preciso acessas 5 programas no Mainframe (que tem um tempo de resposta alto para cada um deles) e fazer isso sequencialmente pode levar muito tempo (no mínimo 15 segundos, pelos meus testes).
Pensei em disparar 5 threads, aguardar o final delas e capturar a informação no seu fim.
O problema é que mais de um usuário pode solicitar a mesma página no mesmo momento, e os parâmetros de chamada aos 5 pgms. no Mainframe mudam, alterando o retorno.
Preciso garantir a integridade no retorno, caso contrário terei que fazer as 5 chamadas sequencialmente (ou no framework ou no mainframe).
Observando este cenário, vocês teriam alguma sugestão? Threads são a melhor alternativa neste caso?
Se ainda precisarem de mais informações, me avisem ok?
Muito grato,
Rogério.
Hum…
é só uma idéia… vejá se alguém tem uma melhor…
inicie as 5 threads e logo após vai dando um join() em cada uma…
assim enquando vc espera por uma thread as outras estão processando e assim por diante…