ExpertiDict

Java · Essencial · Inglês · Técnico

synchronized

/ˈsɪŋkrənaɪzd/palavra-chave

Palavra-chave que garante exclusão mútua: só uma thread por vez executa o bloco ou método sobre o mesmo monitor, e as mudanças ficam visíveis às demais.

Onde usar

Aparece em contadores e caches compartilhados; sem ela, count++ em várias threads perde atualizações. Em review: 'isso é thread-safe?'.

Em código

class Contador {
  private int n;
  synchronized void inc() { n++; }
  synchronized int get() { return n; }
}

Exemplos

Make the increment synchronized or two threads will lose updates.

Torne o incremento synchronized ou duas threads perderão atualizações.

Keep the synchronized block as small as possible.

Mantenha o bloco synchronized o menor possível.

Cuidado

Sincronizar em this ou em objeto público expõe o lock a código externo; prefira um lock privado. Bloco grande também derruba o desempenho.

Veja também

Todos os termos de Java