Se eu possuir uma funcao um pouco mais pesada ( q demore 0,5 segundos por exemplo ) e ela for acessada simultaneamente por 50 usuarios (chute ), ele ira gerar uma espera de 25 segundos para o ultimo por ser estatica ou nao…
A “espera” só ocorre se seu método for sincronizado, se não for o que pode ocorrer é uma bagunça por causa da concorrência …
Lembrando que EJBs não são amigos do static , use com cuidado
aborges
Eu nao estou usando eles em um EJB…
Outra coisa…
Como ele geraria confusão? Tipo… Ao comecar a executar um metodo ele pode interromper a execucao e comecar de novo pra outro solicitacao e assim por diante e no fim misturar os valores todos?
Valew…
jgbt
aborges:
Eu nao estou usando eles em um EJB…
Outra coisa…
Como ele geraria confusão? Tipo… Ao comecar a executar um metodo ele pode interromper a execucao e comecar de novo pra outro solicitacao e assim por diante e no fim misturar os valores todos?
Valew…
o problema de não ser sincronisado é referente a mudança de valores dentro do metodo, pois varias threads vão acessa-lo ao mesmo tempo.
[]'s
Rafael_Steil
As variaveis de escopo do metodo nao sao afetadas pela concorrencia, somente as de classe, se houver alguma.
Ou seja, vc nao tera problemas de concorrencia se tudo oque vc usar for inerente ao metodo, e podera ter problemas se houver algum membro da classe que eh gravado pelos metodos estaticos fora de blocos sincronizados. Se for somente leitira nao ha problema algum.
Rafael
cv1
Lembrando tambem que metodos estaticos, quando eh pra dar uma maozinha em tarefas pequenas que de outra forma estariam duplicada pra todo lado, sao extremamente beneficos quando usados sem forcar a barra.
A coisa horrivel eh ter variaveis estaticas. As implementacoes usuais de Singletons, Factories e outros patterns levam a codigo porco justamente por esse e outros motivos
kuchma
Ah, nem pra criar constantes? :mrgreen:
Marcio Kuchma
fzampa
jgbt:
aborges:
Eu nao estou usando eles em um EJB…
Outra coisa…
Como ele geraria confusão? Tipo… Ao comecar a executar um metodo ele pode interromper a execucao e comecar de novo pra outro solicitacao e assim por diante e no fim misturar os valores todos?
Valew…
o problema de não ser sincronisado é referente a mudança de valores dentro do metodo, pois varias threads vão acessa-lo ao mesmo tempo.
[]'s
Deixa eu ver se eu entendi…
Se eu utilizando o sistema acesso MeuObjeto.marcaX(int x);
e vc utilizando também acessa o mesmo método ambos compartilham a mesma thread? Se houver alteração de conteúdo altera para os dois?
Eu achei que cada um era uma “instância”*.
*Essa foi a melhor palavra que eu encontrei.
Ou o MeuObjeto compartilha seu métodos e atributos Static para todos os seus acessos?
Rafael_Steil
Entao, essa eh a diferenca “basica” entre metodos de instancia e metodos de classe. Qdo vc tem algo static, ele eh um soh para todas as instancias que por ventura venham a existir. Logo, se vc altera algum membro estatico, todas as instancias irao ver a mudanca.
E, mais uma vez, o que vc cria dentro do metodo eh referente unicamente àquela chamada do metodo, independente de ser static ou nao.
Rafael
fzampa
Ah, isso me lembra uma leitura que fiz (não lembro qual) que dizia que elementos estáticos servem como uma “configuração” para todos os usuários do sistema.