Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Dúvida no Ex. 4 da Aula 6 - Threads

1 -A logica da thread no caso da conta foi que, o mesmo objeto estava tentando acessar o método, então tinha que controlar a entrada.

no caso do exemplo usando array , eram 3 objetos adicionando no mesmo array , então logo eu tinha que syncronizar o array.

a logica das thread são... eu sincronizar o que ele tem em comum, o que ambos estão querendo fazer ao mesmo tempo ?

2- ficou meio confuso a parte do array , eu crio um array no main , mando ele para 3 objetos diferentes e depois chamo ele já com as mensagem adicionadas, eu fiz outros teste para entender , mas é que fica estranho rssr

3 - eu vi tb que o método lista.contains(null ), eu não preciso fazer um for para percorrer ele, ta certo ? caso eu querira saber se tem algum null na lista.

2 respostas

Marcos, Bom dia !!

mais para frente na trilha de Java Avançado terá uma excelente explicações sobre thread , mas só para poder tirar sua dúvida .

o array não é sincronizado como a Classe Vector , então o que acontece , quando você criar thread , cada thread cria um cache da variável , então ela não acessa exatamente a variável entende , isso pode dar um problema caso a outra thread acessa o atributo antes de de atualizar a variável e ter o valor errado .

ao utilizar a palavra reservada synchronized , ele faz com que atualize a variável da classe , não passando por esse cache , sendo assim os dados vão estar correto .

sobre sua duvida lista , tem que haver for , pois é necessário verificar se cada elemento da lista possui um null .

conseguiu entender , não sei se ficou meio confusa a explicação .

Espero ter ajudado

solução!

Sobre a pergunta 2, o fato dele entra dentro das classes e fazer o que tem de fazer e depois voltar preechido , tem a haver porque ele está dentro do main que é statico e logo pode ser enchergado por qualquer objeto ?