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.