import java.util.concurrent.locks.*; import java.util.Scanner; class Bang { public static void main(String[] args){ Kode kode = new Kode(); Thread lunte = new Thread(new Bombe(kode)); Thread desarmer = new Thread(new Desarmer(kode)); lunte.start(); desarmer.start(); try { desarmer.join(); } catch(InterruptedException e){} lunte.interrupt(); } } class Bombe implements Runnable { Kode kode; int i = 5; public Bombe(Kode k){ System.out.println("Legg inn armeringskode: "); k.leggInnKode(new Scanner(System.in).nextLine()); } @Override public void run(){ while (i>0){ System.out.println(i); i--; try { Thread.sleep(1000); } catch (InterruptedException e){ return; } } System.out.println("BOOM!"); System.exit(0); } } class Desarmer implements Runnable { Scanner sc = new Scanner(System.in); Kode kode; public Desarmer(Kode k){ kode = k; } @Override public void run(){ System.out.println("SKriv: " + kode.hentKode() + " for aa desarmere bomben!\nBomben sprenger om 5 sekunder!"); String inn = sc.nextLine(); while (!kode.sammenlignKode(inn)){ System.out.println("Feil input"); inn = sc.nextLine(); } System.out.println("Phew!"); } } class Kode { private String kode; private Lock lock = new ReentrantLock(true); public boolean sammenlignKode(String s){ return s.equals(kode); } public void leggInnKode(String k){ lock.lock(); try { kode = k; } finally { lock.unlock(); } } public String hentKode(){ return kode; } }