Ich habe einen Prozess A, der eine Tabelle im Speicher mit einer Reihe von Datensätzen enthält (recordA, recordB usw.)
Jetzt kann dieser Prozess viele Threads starten, die sich auf die Datensätze auswirken, und manchmal können zwei Threads versuchen, auf denselben Datensatz zuzugreifen - diese Situation muss abgelehnt werden. Insbesondere wenn ein Datensatz von einem Thread gesperrt wird, soll der andere Thread abgebrochen werden (ich möchte nicht blockieren oder warten).
Derzeit mache ich so etwas:
synchronized(record)
{
performOperation(record);
}
Aber das verursacht mir Probleme ... denn während Process1 die Operation ausführt, blockiert / wartet Process2, wenn es hereinkommt, die synchronisierte Anweisung und wenn Process1 beendet ist, führt es die Operation aus. Stattdessen möchte ich so etwas:
if (record is locked)
return;
synchronized(record)
{
performOperation(record);
}
Irgendwelche Hinweise, wie dies erreicht werden kann? Jede Hilfe wäre sehr dankbar. Vielen Dank,