Synchronized

5 respostas
T

Vamos lá… veja minha duvida…

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?

vou ter q usar synchronized(updateTurn);

5 Respostas

J

Oi

Tomaz, o que fica sincronizado é o teu método… A classe não…

T+

J

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

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

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

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).

:wink:

Criado 26 de março de 2004
Ultima resposta 6 de jan. de 2005
Respostas 5
Participantes 5