Back to slide -- Keyboard shortcut: 'u'  next        SikkerBank1.java - Det samlede program med Konto og 'filial opstart'.Lecture 14 - slide 32 : 41
Program 3

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