public synchronized static void addUpdateTurn(UpdateListTurn obj) {
if (updateTurn == null)
updateTurn = new Vector();
if (!updateTurn.contains(obj))
updateTurn.add(obj);
}
me digam um coisa… sei q o método so podera ser chamando novamente quando nenhum objeto estiver utilizando ele… graças ao synchronized … porem…
a classe fica sincronizada???
o meu updateTurn fica sinchronizado???
quero deixar esse código assim
Classe pode ser acessada… pois existes milhares de métodos estaticos nela…
o vetor updateTurn tem q ficar lock … pois tenho q garantir sua integridade =] tenderam?
Tomaz, o que fica sincronizado é o teu método… A classe não…
T+
J
JavaTecoPJ
Respondendo a pergunta:
Vai ter sim… como vc mesmo disse: o synchronized no método só garante que este método seja executado um por vez… mas os objetos dentro do método não ficam…
C
Carlos_SantiagoPJ
Só para completar, a classe Vector já é por natureza synchronized, então vc não precisa se preoculpar com a integridade dela.
Por isso, de uma forma geral, não é uma boa idéia usar Vector para armazenar, use ArrayList !
Ah…o HashTable também é synchronized.
T
TomazLavieriPJ
meu problema é q estes métodos saum publicos e estaticos… e alguem quando atualiza o banco de dados… todas as janelas abertas que estaum usando esta parte do banco vaum ter uma xamada de atualização… só que se alguem fechar a janela na mesma hora q o ta xamando o método… vai gerar erro de nullpointer… por isso tem q sincronizar =]
e tem uns fors tb… que por isso tem q sincronizar…
“Carlos_Santiago”:
Só para completar, a classe Vector já é por natureza synchronized, então vc não precisa se preoculpar com a integridade dela.
Por isso, de uma forma geral, não é uma boa idéia usar Vector para armazenar, use ArrayList !
Ah…o HashTable também é synchronized.
R
RobsonPJ
A classe não fica sincronizada, mas nenhum outro thread, além do que efetuou o bloqueio do método sincronizado, terá acesso aos métodos sincronizados da classe (todos).