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