Mit den MultiCore Rechnern ist es ja möglich, dass bei zwei Threads einer VM jeder einzelne Thread auf einem eigenen Core läuft und absolut zeitgleich mit dem anderen ein und die selbe Zeile einer Tabelle liest oder schreibt.
Sagen wir ich benutze Optimistic Locking.
Beispiel: Shopsystem
Angenommen: Nur noch 5 Stück von Produkt A
Zwei Threads greifen kurz nacheinander auf das Produkt zu und lesen beide: Noch 5 Stück verfügbar
Jeder Thread kauft 5 Stück ein und möchte die Verüfbarkeit entsprechend aktualisieren. Das passiert rein zufällig zur selben Zeit.
Frage:
a) Was passiert jetzt? Wird ein Exception geworfen? Welcher Thread "gewinnt"?
b) Was muss die Datenbank können um die Situation zu handeln?
c) Macht es einen Unterschied für das Verhalten, ob man für den Zugriff auf die Datenbank Hibernate oder ähnliches verwendet?
Sagen wir ich benutze Optimistic Locking.
Beispiel: Shopsystem
Angenommen: Nur noch 5 Stück von Produkt A
Zwei Threads greifen kurz nacheinander auf das Produkt zu und lesen beide: Noch 5 Stück verfügbar
Jeder Thread kauft 5 Stück ein und möchte die Verüfbarkeit entsprechend aktualisieren. Das passiert rein zufällig zur selben Zeit.
Frage:
a) Was passiert jetzt? Wird ein Exception geworfen? Welcher Thread "gewinnt"?
b) Was muss die Datenbank können um die Situation zu handeln?
c) Macht es einen Unterschied für das Verhalten, ob man für den Zugriff auf die Datenbank Hibernate oder ähnliches verwendet?
Zuletzt bearbeitet: