Java · Avançado · Inglês · Técnico
happens-before
Relação do Modelo de Memória Java que garante que as escritas de uma ação ficam visíveis a outra. Sem ela, uma thread pode não enxergar dados da outra.
Onde usar
Aparece em discussões de visibilidade e em review de campos compartilhados: unlock e lock, volatile e start e join criam essa relação.
Em código
int dado;
volatile boolean pronto;
// thread A
dado = 42; pronto = true;
// thread B: se vê pronto, vê dado
if (pronto) System.out.println(dado);Exemplos
There is no happens-before edge between these two threads.
Não há relação happens-before entre essas duas threads.
A volatile write happens-before every later read of it.
Uma escrita volatile happens-before toda leitura posterior dela.
Cuidado
Ter rodado antes no relógio não implica happens-before: sem sincronização, o tempo real não garante visibilidade.
Origem
Do inglês happens before, acontece antes: termo formalizado por Leslie Lamport.