Sobes.tech
Junior — Middle

Podes enumerar os diferentes tipos de mecanismos de bloqueio utilizados na programação multithread?

sobes.tech IA

Resposta da IA

Na programação multithread em Java, diferentes mecanismos de bloqueio são utilizados para sincronizar o acesso a recursos partilhados:

  • synchronized — mecanismo de bloqueio incorporado que pode ser aplicado a métodos ou blocos de código. Utiliza o monitor do objeto.
  • ReentrantLock do pacote java.util.concurrent.locks — bloqueio mais flexível com capacidade de interrupção, tempos limite e verificação de estado.
  • ReadWriteLock — permite dividir os bloqueios em leitura e escrita, o que aumenta o desempenho em operações de leitura intensiva.
  • Semaphore — limita o número de threads que podem aceder simultaneamente a um recurso.
  • CountDownLatch e CyclicBarrier — para coordenar threads, embora não sejam bloqueios clássicos, mas sincronizadores.

Exemplo de uso de ReentrantLock:

import java.util.concurrent.locks.ReentrantLock;

ReentrantLock lock = new ReentrantLock();

lock.lock();
try {
    // secção crítica
} finally {
    lock.unlock();
}