Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Dúvida no Ex. 2 da Aula 6 - Threads - Java III

Olá pessoal,

Vocês poderiam me explicar porque ocorrem os erros descritos na resposta (posição nula, pula posição)?

No meu entendimento, se as threads estão considerando o mesmo objeto (considero que seja o mesmo endereço na memória), mesmo intercalando a execução das threads, o método add apenas adicionaria a mensagem na próxima posição do arraylist, ou seja, se a thread 1 adicionou na posição 10, ao trocar para a thread 2 será considerada a posição 11 (porque ambas as threads apontam para o mesmo objeto/posição na memória), ou seja, a cada add será verificada a próxima posição a considerar.

Desde já obrigado!

Atte., Elías.

1 resposta
solução!

Oi Elías, a classe ArrayList não é threadsafe :). Pode ser que enquanto uma thread pediu para adicionar, ela foi interrompida e entrou a execução, pedindo para adicionar na mesma posição e aí, por conta da implementação do ArrayList pode ocorrer alguma inconsistência.