Tengo un proceso A que contiene una tabla en la memoria con un conjunto de registros (recordA, recordB, etc ...)
Ahora, este proceso puede lanzar muchos subprocesos que afectan los registros y, a veces, podemos tener 2 subprocesos intentando acceder al mismo registro; esta situación debe ser negada. Específicamente, si un registro está BLOQUEADO por un hilo, quiero que el otro hilo se anule (no quiero BLOQUEAR o ESPERAR).
Actualmente hago algo como esto:
synchronized(record)
{
performOperation(record);
}
Pero esto me está causando problemas ... porque mientras Process1 está realizando la operación, si Process2 entra, bloquea / espera en la declaración sincronizada y cuando Process1 finaliza, realiza la operación. En cambio, quiero algo como esto:
if (record is locked)
return;
synchronized(record)
{
performOperation(record);
}
¿Alguna pista sobre cómo se puede lograr esto? Cualquier ayuda será muy apreciada. Gracias,