У мене є процес A, який містить таблицю в пам'яті з набором записів (recordA, recordB тощо ...)
Тепер цей процес може запустити багато потоків, які впливають на записи, а іноді ми можемо мати 2 потоки, які намагаються отримати доступ до одного і того ж запису - цю ситуацію потрібно заперечувати. Зокрема, якщо запис БЛОКУЄТЬСЯ одним потоком, я хочу, щоб інший потік перервався (я не хочу БЛОКУВАТИ або ЗАЧЕКАТИ).
В даний час я роблю щось подібне:
synchronized(record)
{
performOperation(record);
}
Але це викликає у мене проблеми ... тому що, поки Process1 виконує операцію, якщо Process2 надходить, він блокує / чекає синхронізований оператор, і коли Process1 закінчується, він виконує операцію. Натомість я хочу щось подібне:
if (record is locked)
return;
synchronized(record)
{
performOperation(record);
}
Будь-які підказки про те, як цього можна досягти? Будь-яка допомога буде дуже вдячна. Дякую,