D
Delv..
Gast
Hallo!
kann mir bitte jemand weiterhelfen??
Die frage war:
Ändern Sie die Methode überweisen so ab, dass keine Verklemmungen mehr möglich sind! Die
ineinander geschachtelten synchronized-Blöcke sollen dabei erhalten bleiben.
[Edit by Beni: Codetags, verschoben]
kann mir bitte jemand weiterhelfen??
Die frage war:
Ändern Sie die Methode überweisen so ab, dass keine Verklemmungen mehr möglich sind! Die
ineinander geschachtelten synchronized-Blöcke sollen dabei erhalten bleiben.
Code:
class Konto
{
private float stand; //Kontostand
public Konto()
{
stand = 1000.0;
}
public void ändern(float betrag)
{
stand += betrag;
}
}
class Bank
{
private Konto[] konten;
public Bank()
{
konten = new Konto[1000];
for(int i = 0; i < konten.length; i++)
konten[i] = new Konto();
}
public void überweisen(int vonKontoNr, int nachKontoNr, float betrag)
{
synchronized(konten[vonKontoNr])
{
synchronized(konten[nachKontoNr])
{
konten[vonKontoNr].ändern(-betrag);
konten[nachKontoNr].ändern(betrag);
}
}
}
}
[Edit by Beni: Codetags, verschoben]