![]() | Lecture 14 - slide 28 : 41 |
class SynkroniseretKonto {
private double rentesats;
private String navn;
private double saldo;
SynkroniseretKonto(String ejer) {
rentesats = 0.02;
navn = ejer;
saldo = 0;
}
public synchronized double balance () {
return saldo;
}
public synchronized void hæv ( double beløb ) {
saldo = saldo - beløb;
}
public synchronized void indsæt ( double beløb) {
saldo = saldo + beløb;
}
public synchronized void overførFra(double beløb, SynkroniseretKonto fra) {
fra.hæv(beløb);
indsæt(beløb);
}
public synchronized void tilskrivRente() {
saldo = saldo + saldo * rentesats;
}
public synchronized String toString() {
return navn + "'s konto indeholder "
+ saldo + " kroner";
}
} // End SynkroniseretKonto
class SikkerBank {
public static void main( String[] args ) {
final SynkroniseretKonto konto1 = new SynkroniseretKonto("Jens");
final SynkroniseretKonto konto2 = new SynkroniseretKonto("Peter");
// Filial 1:
(new Thread ()
{ public void run() {
konto1.indsæt(100);
konto2.indsæt(500);
System.out.println(konto1); System.out.println(konto2);
konto1.tilskrivRente();
konto2.hæv(125);
System.out.println(konto1); System.out.println(konto2);
konto1.overførFra(25, konto2);
System.out.println(konto1); System.out.println(konto2);
}
}).start();
// Filial 2:
(new Thread ()
{ public void run() {
konto1.indsæt(100);
konto2.indsæt(500);
System.out.println(konto1); System.out.println(konto2);
konto1.tilskrivRente();
konto2.hæv(125);
System.out.println(konto1); System.out.println(konto2);
konto1.overførFra(25, konto2);
System.out.println(konto1); System.out.println(konto2);
}
}).start();
}
} // End SikkerBank