// Bank som har et oppdateringsproblem (race condition) class Bank1 { public static void main(String[] argv) throws InterruptedException { Konto konto = new Konto(2000); Thread giTr?d = new Thread(new GiRun(konto)); Thread taTr?d = new Thread(new TaRun(konto)); giTr?d.start(); taTr?d.start(); giTr?d.join(); // Venter p? at tr?den blir ferdig. Mer om dette i Tr?der del 2! taTr?d.join(); System.out.println("Penger p? konto: " + konto.penger); } } class GiRun implements Runnable { Konto konto; GiRun(Konto konto) { this.konto = konto; } @Override public void run() { for (int i = 0; i < 1000000; i++) { this.konto.gi(); } } } class TaRun implements Runnable { Konto konto; TaRun(Konto konto) { this.konto = konto; } @Override public void run() { for (int i = 0; i < 1000000; i++) { this.konto.ta(); } } } // Felles data uten l?ser class Konto { int penger; Konto(int penger) { this.penger = penger; } public void ta() { int x; x = this.penger; x = x - 500; this.penger = x; } public void gi() { int x; x = this.penger; x = x + 500; this.penger = x; } }