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.