Uso do synchronized?

4 respostas
saulobt

Bom dia Pessoal.

minha duvida e o seguinte,

se tenho uma classe comum… que nao uso nada de threads… mas tenho metodos com o synchronized… ele vai funcionar… tambem… tipo o metodo fica sincronizado e somente uma pessoa de cada vez vai utilizalo… ou nao? ele so vai funcionar com threads… o synchronized nao se aplica dessa forma.

uso isso em alguns metodos de algumas classes que uso pra web. nao e servlets, uso jsp que acesso a classes estatic e metodos statics …

obrigado

4 Respostas

abelgomes

a groso modo o synchronizade serve para, se duas Threads tentarem acessar seu metodo ao mesmo tempo, ele segura uma por ms e depois libera.

dlt

Olha, se vc não usa mais de uma thread não faz sentido usar synchronized. Ele serve pra impedir que mais de uma thread execute o mesmo método simultaneamente.

Agora, se vc está usando em uma app web é bem provavel que o servidor de aplicações crie threads pra cada request feito ao seu jsp que use essa classe, e aí sim, vc estará usando threads e o synchronized vai funcionar.

Pq vc está tentando sincronizar esses métodos?

saulobt

Entao…

porque estes metos sao metodos que acessa o banco de dados…

tipo insere, deleta, altera… e conulta…

rubinelli

Problemas de concorrência no banco não são resolvidos com synchronized, e sim com transações. Dá uma estudada nesse assunto; se você estiver usando Hibernate ou EJB, já tem todo um suporte a transações que você pode usar. Mesmo que você esteja usando JDBC seco, para os casos mais simples, também não é nenhum bicho de 7 cabeças.

Criado 30 de dezembro de 2008
Ultima resposta 31 de dez. de 2008
Respostas 4
Participantes 4