// 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; } }