Sobes.tech
Junior — Middle

Podes dar um exemplo de uma situação em Java em que seja utilizado bloqueio pessimista para evitar conflitos ao aceder aos dados?

sobes.tech IA

Resposta da IA

O bloqueio pessimista em Java é frequentemente usado quando é necessário garantir que os dados não serão alterados por outros threads durante a execução de uma operação crítica. Por exemplo, ao trabalhar com um banco de dados via JPA/Hibernate, pode-se usar o método lock() com o tipo de bloqueio PESSIMISTIC_WRITE para evitar alterações simultâneas na mesma entrada:

EntityManager em = ...;
EntityTransaction tx = em.getTransaction();
tx.begin();

// Obter o objeto com bloqueio de escrita
MyEntity entity = em.find(MyEntity.class, id, LockModeType.PESSIMISTIC_WRITE);

// Fazer alterações
entity.setValue(newValue);

// Salvar as alterações
em.persist(entity);
tx.commit();

Neste exemplo, enquanto a transação não for concluída, outras transações que tentarem obter bloqueio na mesma entrada esperarão, o que previne conflitos e garante a integridade dos dados.