Hallo, ich habe momentan eine Java Aufgabe aus einer Klausur vorliegen, und hätte gern gewusst, ob ich mit meinen Antworten richtig liege.
Die Aufgabe ist die folgende:
Gegeben sei folgende (unvollständige) Klasse:
Alles anzeigen
Das Ziel ist es, jede Preisänderung von allen Waren atomar zu gestalten.
a) Sie finden heraus, dass es so etwas wie Semaphoren mit den Methoden P() und V()
gibt. Mit welchem Wert müsste die Semaphore initialisiert werden?
-> Meine Antwort: Mit 1, denn es kann zu Anfang direkt eine Ware justiert werden, danach muss gewartet werden, bis diese fertig ist. Erst dann kann der nächste Preis justiert werden. Es soll ja alles atomar passieren. Richtig/Falsch?
b) Wie müsste der Quelltext geändert werden, wenn in der Klasse eine Semaphore sem zur
Verfügung steht?
-> Meine Antwort: Von der vorherigen Antwort ausgehend:
Alles anzeigen
Richtig/Falsch?
c) Das Programm stürzt direkt ab. Welchen Fehler wurde gemacht, der mit Monitoring nicht
passiert wäre?
Das Freigeben/Reservieren wurde vergessen. Dies führt zu einem Deadlock.
Richtig/Falsch?
d) Sie finden das Konzept des Monitorings und passen Ihre Klasse Ware wie folgt an
Führt das zum gewünschten Ergebnis? Wenn nein, was könnte man besser machen?
-> Meine Antwort: Nein, damit wird die komplette Methode synchroniziert. Wir wollen aber den einzelenen, atomaren Aufruf der Preis justierungs Methode synchronisieren.
Daher müsste dies in einem synchronized Block geschehen
, mit Thread.lock oder mit java.util.concurrent.atomic.
Richtig/Falsch?
Würde mich über eine Rückmeldung freuen. Danke vielmals im voraus!
Die Aufgabe ist die folgende:
Gegeben sei folgende (unvollständige) Klasse:
Quellcode
Das Ziel ist es, jede Preisänderung von allen Waren atomar zu gestalten.
a) Sie finden heraus, dass es so etwas wie Semaphoren mit den Methoden P() und V()
gibt. Mit welchem Wert müsste die Semaphore initialisiert werden?
-> Meine Antwort: Mit 1, denn es kann zu Anfang direkt eine Ware justiert werden, danach muss gewartet werden, bis diese fertig ist. Erst dann kann der nächste Preis justiert werden. Es soll ja alles atomar passieren. Richtig/Falsch?
b) Wie müsste der Quelltext geändert werden, wenn in der Klasse eine Semaphore sem zur
Verfügung steht?
-> Meine Antwort: Von der vorherigen Antwort ausgehend:
Quellcode
Richtig/Falsch?
c) Das Programm stürzt direkt ab. Welchen Fehler wurde gemacht, der mit Monitoring nicht
passiert wäre?
Das Freigeben/Reservieren wurde vergessen. Dies führt zu einem Deadlock.
Richtig/Falsch?
d) Sie finden das Konzept des Monitorings und passen Ihre Klasse Ware wie folgt an
Führt das zum gewünschten Ergebnis? Wenn nein, was könnte man besser machen?
-> Meine Antwort: Nein, damit wird die komplette Methode synchroniziert. Wir wollen aber den einzelenen, atomaren Aufruf der Preis justierungs Methode synchronisieren.
Daher müsste dies in einem synchronized Block geschehen
, mit Thread.lock oder mit java.util.concurrent.atomic.
Richtig/Falsch?
Würde mich über eine Rückmeldung freuen. Danke vielmals im voraus!