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