Programação Concorrente

13 respostas
I

Fala pessoal,
to trabalhando com programação concorrente e minha dúvida é a seguinte: Qd eu uso um método “Syncronized” todos os atributos da classe a qual pertence o método ficam protegidos pela exclusão mutua? ou soh os atributos que estão sendo utilizados pelo método?

Na especificação do J2SE 1.5, existem novas classes pra trabalhar com programação concorrente, por exemplo, o pacote “java.util.concurrente.locks” possui um método chamado “lock” utilizado para exclusão mútua logicamente, a minha dúvida persiste em saber se esta exclusão mútua vale para todos os atributos da classe ou para apenas aqueles atributos que estão contidos entre a chamada de “lock” e “unlock”.

Desde já agradeço

Igor P. Simões

13 Respostas

pcalcado

Não, você está sincronizando apenas o bloco de código sincronizado (ugh), seja método ou não.

I

e se eu utilizar “syncronized (objeto){}”
neste caso eu vou estar protegendo por exclusão mutua todos os atributos do “objeto”… certo?

pcalcado

Não, você vai estar adquirindo um lock para aquele objeto, qualquer outra thread que tente adquirir este lock terá que esperar até você o soltar.

saoj

O Java não protege nada. Quem protege é vc dentro de um bloco synchronized.

I

Não, você vai estar adquirindo um lock para aquele objeto, qualquer outra thread que tente adquirir este lock terá que esperar até você o soltar.

pois eh…qd vc diz q eu vou tah adiquirindo um lock pro objeto…isso keh dize o q ? o q quer dizer esse lock? não quer dizer que eu “tranco” tudo que o objeto encapsula e assim evito que outras threads acessem esses atributos encapsulados?

I

por exemplo…eu tenho o metodo syncronized em um objeto…ou seja eu pego o lock do objeto…vamos supor que outra thread comece a executar e tente acessar “objeto.atributo1” ou “objeto.metodo1”…esta thread vai conseguir executar estes comandos e acessar os atributos do objeto? ou qd esta thread for tentar acessar estes atributos ela vai esperar até a primeira thread liberar o lock?

pcalcado

Nao, um lock eh um conceito. Quando voce faz um lock em algo, ningue, consegue fazer um lock neste mesmo elemento enquanto voce detiver o lock. Isso nao vai influenciar o objeto em questao exceto pelo fato de que ele nao vai mais poder ser usado como lick.

De uma olhada na docuemntaçao de Threads, o que voce quer esta la :wink:

Rubem_Azenha

pcalcado:
Não, você está sincronizando apenas o bloco de código sincronizado (ugh), seja método ou não.

pq o “(ugh)”?

é por que colocar syncronized nos métodos deixa o código mais lento e devesse usar o syncronized para sincronizar apenas os objs que vc quer sincronizar?
ou por outro motivo?

pcalcado

Nao, eh pela cacofonia mesmo, alias este topico ta cheio.

Thiago_Senna

cacofonia???

Que isso? É alguma mistura entre o caco namorado da PIG (daquele desenho que tinha o gonzo…) + Sinfonia…???

hehe… rsrs…

Abraços!
Thiago

cv1

*** cv taca um dicionario em Thiago Senna

boaglio

Vamos usar a internet antes de perguntar o significado das palavras…

:?

Thiago_Senna

http://www.priberam.pt:
do Gr. kakophonia, som desagradável

s. f., som desagradável ou palavra obscena que resulta da ligação das letras finais de uma palavra com as letras iniciais da palavra seguinte.

Opa… valeu…

Vou procurar usar essa nova palavra que aprendi no meu dia a dia. Ao invés de mandar alguém calar a boca, vou dizer para eles parar de cacofonar… :mrgreen:

Thiago Senna

Criado 20 de junho de 2005
Ultima resposta 23 de jun. de 2005
Respostas 13
Participantes 7