Back to lecture notes -- Keyboard shortcut: 'u'              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