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