ExpertiDict

Java · Avançado · Inglês · Técnico

happens-before

/ˈhæpənz bɪˈfɔr/substantivo

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.

Veja também

Todos os termos de Java