ExpertiDict

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

ReentrantLock

/riˈɛntrənt lɑk/substantivo

Lock explícito de java.util.concurrent que a mesma thread pode readquirir e que oferece tryLock, timeout, interrupção e condições, além do que o synchronized dá.

Onde usar

Aparece quando o synchronized não basta: tentar o lock sem bloquear ou liberar em outro escopo. Sempre com unlock em finally.

Em código

var lock = new ReentrantLock();
if (lock.tryLock(1, TimeUnit.SECONDS)) {
  try {
    // seção crítica
  } finally {
    lock.unlock();
  }
}

Exemplos

Use tryLock with a timeout instead of blocking forever.

Use tryLock com timeout em vez de bloquear para sempre.

Always release the ReentrantLock in a finally block.

Sempre libere o ReentrantLock num bloco finally.

Cuidado

Esquecer o unlock() ou colocá-lo fora do finally deixa o lock preso para sempre depois de uma exceção.

Sinônimos

lock reentrante

Veja também

Todos os termos de Java