Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Por que os métodos de acesso"get" precisam ser sincronizados?

Nessa parte, o instrutor explicou:

"Esse problema não só acontece nos métodos que modificam os dados. Isso também se aplica aos métodos acessores, get por exemplo. Eles também devem usar synchronized."

Não consegui visualizar o problema. O que pode acontecer se eu acessar o método pegaElemento() com threads sem usar o synchronized?

1 resposta
solução

O motivo disso é proteger-se contra qualquer outra thread que atualize o valor quando um valor estiver sendo lido e, assim, evitar executar qualquer ação no valor obsoleto retornado pelo get. Mesmo o set sendo syncronized (uma thread atualiza o valor por vez), o get continua lendo em todas as threads, eventualmente uma thread pode atualizar o valor e o get de outra thread, que não queria esse valor, obte-lo.