Buchungssystem implementieren

laprin__

Neues Mitglied
Hallo, ich soll ein Buchungssystem in Java auf Nebenläufigkeit erweitern und komme dabei leider nicht voran. Das Buchungssystem an sich habe ich bereits implementiert, als Kurzfassung: Ich habe eine Queue implementiert, in der random generierte Buchungssätze gespeichert werden. ich soll jetzt mehrere Threads erstellen, die die Buchungssätze aus der Queue entnehmen, prüfen und anschließend, wenn die Buchungssätze richtig sind, verbuchen sollen. Ein Thread darf einen Buchungssatz jedoch nicht verbuchen, wenn dieser Buchungssatz ein Konto enthält, das gerade von einem anderen Thread verändert wird. Die Methoden zum Prüfen der Richtigkeit habe ich auch bereits implementiert. Sprich es fehlt nur noch das Einbauen der Nebenläufigkeit. Ich weiss jedoch überhaupt nicht, wo ich die synchronize Blöcke einbauen soll :( Ich wäre dankbar über jeden Tipp!
 

Robert Zenz

Top Contributor
Also spontan haette ich gesagt du synchronisierst einfach auf das Konto welches zu gerade aendern willst.

Java:
synchronized (account) {
    if (account got enough money) {
        withdraw all the money
    }
}

Wenn man es etwas genauer haben will, kann man jedem Konto auch ein eigenes Objekt verpassen auf welches gesperrt wird:

Java:
synchronized (account.getLockObject()) {
    if (account got enough money) {
        withdraw all the money
    }
}

Und wenn man ganz uebel werden will, verwaltet man sich intern eine Sperre:

Java:
account.lock();

if (account got enough money) {
    withdraw all the money
}

account.release();

Das letztere klingt aber nach einigen Kopfschmerzen.

Und wo wir schonmal bei Multi-Threading sind, zahlt es sich immer aus auf The Deadlock Empire zu verweisen als herovrragende Einfuehrung in die Problematik.
 

KonradN

Super-Moderator
Mitarbeiter
Das Problem wird aber vermutlich auch sein, dass Du mindestens 2 Konten haben wirst. Und dann kann folgendes passieren:

Buchung 1 hat Konto A und B
Buchung 2 hat Konto B und A
Beide wollen gleichzeitig verarbeitet werden:
Buchung1 blockt Konto A
Buchung2 blockt Konto B
Buchung1 will dann noch Konto B, ist aber derzeit geblockt, also wartet es, dass es frei wird.
Buchung2 will noch Konto A und wartet, dass es frei wird

==> Deadlock.

Aber das sind dann bestimmt Dinge, die in Unterricht oder Vorlesung behandelt wurden. :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Kann man Annotationen auf Klassen einschränken die ein Interface implementieren? Allgemeine Java-Themen 1
MiMa Was sollte man ins JavaDoc implementieren?? Allgemeine Java-Themen 17
L Generator für einen Parser implementieren Allgemeine Java-Themen 13
L Template Engine entwerfen und implementieren Allgemeine Java-Themen 4
D OOP Gemeinsamen ID-Raum für zwei Klassen implementieren Allgemeine Java-Themen 7
P BruteForce Ansatz implementieren Allgemeine Java-Themen 32
A Breitensuche mit Hop-Distanzen in Java - Wie implementieren? Allgemeine Java-Themen 4
M Maven Deutsche Post API implementieren Allgemeine Java-Themen 2
S Eclipse Probleme beim Implementieren / Ausführen von jUnit 5-Test Suites Allgemeine Java-Themen 14
N Best Practice Allgemeines Verhalten für ein Interface implementieren? Allgemeine Java-Themen 7
K Geschätze Zeit implementieren Allgemeine Java-Themen 14
B Live Search implementieren Allgemeine Java-Themen 4
S Threads Kann mir jemand helfen eine parallele Hilfsklasse zu implementieren..? Allgemeine Java-Themen 3
T Generisch implementieren Allgemeine Java-Themen 31
J Wie implementieren, Frge an die Erfahrenen... Allgemeine Java-Themen 7
M Interface einer Library implementieren Allgemeine Java-Themen 3
F Schlüsselworte RSA Verschlüsselung implementieren Allgemeine Java-Themen 5
H Copy Paste implementieren ausserhalb des Programms? Allgemeine Java-Themen 2
D Aufgabe: Schnittstelle und Proxy implementieren Allgemeine Java-Themen 2
B Best Practice HTML Output Optimal implementieren Allgemeine Java-Themen 3
I Mehrfaches Implementieren eines generischen Interface Allgemeine Java-Themen 9
DStrohma In abstrakter Klasse Konstruktor von Instanz implementieren Allgemeine Java-Themen 11
X Modalität von JDialog nachträglich in JFrame implementieren? Allgemeine Java-Themen 8
O Plugin perfomrant implementieren Allgemeine Java-Themen 12
P InterfaceMethoden nicht implementieren Allgemeine Java-Themen 5
C Hilfe bei Adressbuch-Programmierung, wie am Besten mit JList implementieren Allgemeine Java-Themen 2
A RandomAccessFile - "insert" implementieren? Allgemeine Java-Themen 4
nrg Wie würdet ihr eine "Dauerschnittstelle" implementieren? Allgemeine Java-Themen 5
T Von JComponent erben und Set implementieren Allgemeine Java-Themen 2
D Wozu runnable implementieren? Allgemeine Java-Themen 3
D PriorityQueue selbst implementieren Allgemeine Java-Themen 15
E Wie Assoziationen implementieren in Java Allgemeine Java-Themen 22
B mathematische Formeln, umformungen nicht einzeln implementieren Allgemeine Java-Themen 6
J Undo auf eine ArrayList implementieren Allgemeine Java-Themen 3
deetee ListIterator implementieren Allgemeine Java-Themen 3
A feststellen, welche Klassen ein Interface implementieren Allgemeine Java-Themen 3
B Generisches Singleton implementieren Allgemeine Java-Themen 12
T Interface "on-the-fly" implementieren? Allgemeine Java-Themen 3
G Interface - Klassen implementieren das - Reflection ok? Allgemeine Java-Themen 4
G Interface mehrfach implementieren Allgemeine Java-Themen 5
@ zur Laufzeit Interface aus jar implementieren? Allgemeine Java-Themen 5
MQue Vector implementieren Allgemeine Java-Themen 2
MQue Interface implementieren Allgemeine Java-Themen 7
P Liste von Klassen die ein Interface implementieren speichern Allgemeine Java-Themen 12
MQue Methode aus run() aufrufen bzw. implementieren Allgemeine Java-Themen 5
G Collections als Array implementieren Allgemeine Java-Themen 2
P Page Rank Algorithmus implementieren Allgemeine Java-Themen 7
R Interface mittels Reflection implementieren Allgemeine Java-Themen 8
N 2 Interfaces mit Methoden selber Signatur implementieren Allgemeine Java-Themen 5
C Implementieren einer Schnittstelle (Interface), Ausnahmen Allgemeine Java-Themen 7

Ähnliche Java Themen

Neue Themen


Oben