Sobes.tech
Junior — Middle

Podes explicar como usar os mecanismos de bloqueio ao trabalhar com multithreading?

sobes.tech IA

Resposta da IA

Em Java, são utilizados diversos mecanismos de bloqueio para trabalhar com multitarefa, permitindo sincronizar o acesso a recursos partilhados e prevenir condições de corrida.

Principais métodos:

  • synchronized — palavra-chave que pode ser aplicada a métodos ou blocos de código. Garante acesso exclusivo ao monitor do objeto.
public synchronized void increment() {
    counter++;
}
  • java.util.concurrent.locks.Lock — interface que oferece capacidades de bloqueio mais flexíveis que synchronized. Por exemplo, é possível adquirir e liberar explicitamente o bloqueio.
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;

Lock lock = new ReentrantLock();

lock.lock();
try {
    // secção crítica
} finally {
    lock.unlock();
}
  • ReadWriteLock — permite separar bloqueios para leitura e escrita, o que aumenta o desempenho em muitas operações de leitura.

O uso de bloqueios ajuda a evitar problemas de acesso concorrente, como condições de corrida e deadlocks, se a gestão da ordem de aquisição e libertação for feita corretamente no bloco finally.