Junior — Middle
¿Puedes dar un ejemplo de una situación en Java donde se utilice bloqueo pesimista para prevenir conflictos al acceder a los datos?
sobes.tech AI
Respuesta de la IA
El bloqueo pesimista en Java se utiliza a menudo cuando se necesita garantizar que los datos no sean modificados por otros hilos durante la ejecución de una operación crítica. Por ejemplo, al trabajar con una base de datos a través de JPA/Hibernate, se puede usar el método lock() con el tipo de bloqueo PESSIMISTIC_WRITE para evitar modificaciones simultáneas de la misma entrada:
EntityManager em = ...;
EntityTransaction tx = em.getTransaction();
tx.begin();
// Obtenemos el objeto con bloqueo de escritura
MyEntity entity = em.find(MyEntity.class, id, LockModeType.PESSIMISTIC_WRITE);
// Realizamos cambios
entity.setValue(newValue);
// Guardamos los cambios
em.persist(entity);
tx.commit();
En este ejemplo, mientras la transacción no finalice, otras transacciones que intenten obtener bloqueo en la misma entrada esperarán, lo que previene conflictos y garantiza la integridad de los datos.