Sobes.tech
Junior — Middle

De que forma o fluxo obtém controlo sobre o objeto e como ocorre a sua captura num ambiente multithread?

sobes.tech IA

Resposta da IA

Numa ambiente multithread, um thread obtém controlo sobre um objeto através de mecanismos de sincronização que garantem acesso exclusivo ao recurso. Em Android (e em Java em geral), são utilizados palavras-chave e classes como synchronized, ReentrantLock e outros.

Quando um thread deseja aceder a um objeto, tenta capturar o monitor (lock) desse objeto. Se o monitor estiver livre, o thread obtém controlo e pode realizar operações com o objeto. Se o monitor estiver ocupado por outro thread, o thread atual fica bloqueado e espera que seja libertado.

Exemplo usando synchronized:

public class Counter {
    private int count = 0;

    public synchronized void increment() {
        count++;
    }

    public synchronized int getCount() {
        return count;
    }
}

Aqui, os métodos increment e getCount estão sincronizados, o que garante que apenas um thread de cada vez pode executar esses métodos, prevenindo condições de corrida.

Assim, capturar um objeto significa obter o bloqueio do monitor (lock) nesse objeto, garantindo acesso seguro ao seu estado.