class KaffeBar { static class Barista implements Runnable { private final Monitor monitor; Barista(Monitor monitor) { this.monitor = monitor; } @Override public void run() { try { Thread.sleep(1000); monitor.leggTilKaffe(); } catch (InterruptedException e) { System.err.println("Unntak"); } } } static class Baker implements Runnable { private final Monitor monitor; Baker(Monitor monitor) { this.monitor = monitor; } @Override public void run() { try { Thread.sleep(3000); monitor.leggTilKaker(); } catch (InterruptedException e) { System.err.println("Unntak"); } } } static class Gjest implements Runnable { private final Monitor monitor; Gjest(Monitor monitor) { this.monitor = monitor; } @Override public void run() { try { monitor.hentOrdre(); Thread.sleep(10000); } catch (InterruptedException e) { System.err.println("Unntak"); } } } public static void main(String[] args) { Monitor monitor = new Monitor(); Thread barista = new Thread(new Barista(monitor)); Thread baker = new Thread(new Baker(monitor)); Thread gjest = new Thread(new Gjest(monitor)); barista.start(); baker.start(); gjest.start(); try { gjest.join(); } catch (InterruptedException e) { System.err.println("Unntak i main"); } } }