Sobes.tech
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.