Servelts thread safe ??  XML
Índice dos Fóruns » Desenvolvimento Web
Autor Mensagem
analyser
JavaEvangelist
[Avatar]

Membro desde: 26/02/2007 09:31:49
Mensagens: 329
Offline

Olá amigos,

uma pequena pergunta, se eu realizar a minhas criações de objetos e variaveis apenas dentro dos metodos doPost e doGet e não na classe, estarei com minha servelts thread safe??

Ou seja quando trabalho com variaveis e objetos locais e não globais terei minha servelts thread safe??

Obrigado

Analyser
kaique
GUJ Ranger
[Avatar]

Membro desde: 10/04/2006 07:06:06
Mensagens: 911
Localização: Fortaleza-CE
Offline

Sim. Me corrigam se eu estiver errado, mas quando você submete uma requisição ao servlet, uma nova thread será criada para tratar essa requisição. Dessa forma não existe como thread acessar/alterar valores encontrados no "heap" de outra thread.

[]'s.

/**
*
* Carlos Henrique
* carlosce@gmail.com
* kaiquece@hotmail.com
*
* Sun Certified Programmer for the Java 2 Platform, SE 5.0
* Sun Certified Web Component Developer for J2EE 1.4
* Sun Certified Bussiness Component Developer for J2EE 1.3
*
*/
[MSN]
analyser
JavaEvangelist
[Avatar]

Membro desde: 26/02/2007 09:31:49
Mensagens: 329
Offline

É que ouvi dizer tambem, que as variaveis e objetos globais podem ser subscritas pelas threads de cada requisição e as locais ficam livre dessas subscritass

É isso mesmo??

Abraços

Analyser
marcelo_mococa
Virtual Machine Man
[Avatar]

Membro desde: 03/03/2005 10:03:32
Mensagens: 622
Localização: São Paulo
Offline

Você até pode ter variáveis a nível de classe, mas o teu servlet deve extender SingleTheadModel. Mas pelo amor de Deus, nunca faça isso, rs.


É que ouvi dizer tambem, que as variaveis e objetos globais podem ser subscritas pelas threads de cada requisição e as locais ficam livre dessas subscritass


O que acontece é que o conteiner cria apenas uma instância do servlet e para cada requisição ele cria uma thread para te atender. Como é apenas um objeto, se uma thread alterar o valor de algum atributo do servlet, as outras threads também serão afetadas.

Resumindo:
Nunca crie variáveis de classe em um servlet.
Deixe tudo dentro dos métodos que tratam as requisições, dessa forma a VM cuidará do resto.


Marcelo Madeira - TCS
SCJP 1.5
SCWCD 1.4
blog

ramilani12
GUJ Master
[Avatar]

Membro desde: 11/03/2005 01:23:30
Mensagens: 1944
Localização: Curitiba-PR
Offline

Basta ler o Java doc



http://java.sun.com/javaee/5/docs/api/javax/servlet/http/HttpServlet.html

my delicious|follow me|linkedin
[Email] [ICQ]
 
Índice dos Fóruns » Desenvolvimento Web
Ir para:   
Powered by JForum 2.1.8 © JForum Team