Junior — Middle
153
Explicați principiul de funcționare al metodei de blocare optimistă în gestionarea accesului concurent la date.
Companiile au fost întrebate
Prooftech
ООО Динамика
Effective Mobile
Răspuns de la AI
sobes.tech AI
Оптимистичная блокировка — это подход к управлению конкурентным доступом к данным, при котором предполагается, что конфликты при одновременном изменении данных случаются редко. Вместо того, чтобы блокировать ресурсы заранее, система позволяет нескольким транзакциям работать параллельно, а проверку на конфликт выполняет только при попытке сохранить изменения.
Принцип работы:
- Транзакция читает данные и запоминает их версию или состояние.
- Выполняет необходимые изменения локально.
- При сохранении проверяется, не изменились ли данные с момента чтения (сравнивается версия).
- Если данные не изменились, изменения применяются.
- Если данные изменились, транзакция откатывается или повторяется.
Это позволяет повысить производительность в системах с низкой конкуренцией, избегая затрат на блокировки.
Пример на Java с использованием версии:
class Data {
private int value;
private int version;
public synchronized boolean update(int newValue, int oldVersion) {
if (this.version == oldVersion) {
this.value = newValue;
this.version++;
return true;
}
return false; // конфликт
}
public synchronized int getVersion() {
return version;
}
public synchronized int getValue() {
return value;
}
}
Транзакция читает value и version, меняет value и пытается обновить, проверяя version.