Sobes.tech
Junior — Middle

Quais métodos podem garantir um acesso seguro a um objeto ou ao seu campo de múltiplas threads ao mesmo tempo?

sobes.tech IA

Resposta da IA

Para garantir um acesso seguro a um objeto ou ao seu campo a partir de múltiplas threads em Java, utilizam-se vários métodos de sincronização:

  • Palavra-chave synchronized — pode-se sincronizar métodos ou blocos de código para que apenas uma thread os execute de cada vez.

  • Classes do pacote java.util.concurrent, por exemplo, ReentrantLock — um mecanismo de bloqueio mais flexível.

  • Campos Volatile — garantem a visibilidade das alterações na variável entre threads, mas não garantem a atomicidade de operações complexas.

  • Classes atômicas (AtomicInteger, AtomicReference, etc.) — fornecem operações atômicas sem bloqueios.

  • Objetos imutáveis — se um objeto for imutável, é seguro acessá-lo de múltiplas threads sem sincronização.

Exemplo com synchronized:

public class Counter {
    private int count = 0;

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

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

Essa abordagem garante que as operações sobre count sejam atômicas e seguras para threads.