| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/12/2006 10:27:58
|
moreira07PJ
Thread.start()
![[Avatar]](/images/avatar/0)
Membro desde: 11/03/2005 00:00:00
Mensagens: 28
Offline
|
Bom dia,
Tenho uma funcionalidade na minha aplicação que tem um tempo de processamento bastante demorado.
Se estiver sendo executado, e um outro usuário executar ao mesmo tempo gera duplicidade da base de dados.
Resolvi implementar a interface SingleThreadModel no meu servlet, mas não funcionou.
O artigo do GUJ "Thread Safety com Servlets", diz que essa implementação funciona de maneira diferente de servidor para servidor.
Estou usando o tomcat 5.5.9, alguem sabe como funciona nessa versão do tomcat, ou se existe alguma outra forma de fazer com que esse servlet não permita execuções concorrêntes?
Grato,
Rodrigo.
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/12/2006 10:47:36
|
iktuzPJ
Virtual Machine Man
![[Avatar]](/images/avatar/0)
Membro desde: 18/01/2005 00:00:00
Mensagens: 530
Offline
|
Não sei responder a tua pergunta. De qualquer forma porque não implementas um esquema de semáforo? Estais sincronizando a parte que é crítica e deixando os demais processos em espera?
Na verdade no Java5 foi acrescentado a API para tarefas concorrentes,
java.util.concurrent.*
T+
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/12/2006 11:11:46
|
moreira07PJ
Thread.start()
![[Avatar]](/images/avatar/0)
Membro desde: 11/03/2005 00:00:00
Mensagens: 28
Offline
|
Olá iktuz,
O que eu quero fazer é esse esquema de semáforo que você disse.
Mas não intendi esse código que você colocou.
Mais um detalhe, estou utilizando struts, dessa forma não posso herdar a classe Thread, uma vez que minha classe tem que herdar a classe DispatchAction.
Obrigado
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/12/2006 11:15:37
|
Guilherme MelloPJ
JWizard
![[Avatar]](/images/avatar/1)
Membro desde: 25/04/2004 00:00:00
Mensagens: 2994
Offline
|
Caso não conheça muito bem a programação concorrente em Java, dê uma lida: http://java.sun.com/docs/books/tutorial/essential/concurrency/
|
http://blog.guilhermemello.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/12/2006 18:49:39
|
moreira07PJ
Thread.start()
![[Avatar]](/images/avatar/0)
Membro desde: 11/03/2005 00:00:00
Mensagens: 28
Offline
|
Consegui resolver meu problema.
Na verdade viz algo mais simple que não tinha pensado antes.
Utilizei uma variável estática para controlar se o método esta sendo executado, caso esteja em execução sai do método sem fazer nada.
Obrigado a todos :grin:
|
|
|
 |
|
|