Concorrência – Item 66

autorama-5Sincronize o acesso a dados mutáveis compartilhados

Quando várias threads compartilharem dados mutáveis, é necessário que cada thread faça a operação de leitura e gravação aos dados de forma sincronizada. Caso contrário, não haverá garantias que as mudanças feitas de uma thread fiquem visíveis para outra, devido a uma possível otimização usada pelas JVM chamadas de “hoisting”.

As consequências são comportamentos não determinísticos, falhas de atividades e de segurança que são difíceis de depurar e podem ser intermitentes, dependendo de tempo e comportamento do programa que podem também variar radicalmente de uma JVM para outra. A melhor maneira de evitar essa situação ainda é escrever um programa que evite o compartilhamento de dados mutáveis entre threads concorrentes.

Para todas as informações, veja o post inicial.

“Exorta os velhos a que sejam temperantes, sérios, sóbrios, sãos na fé, no amor, e na constância” Tito 2:2