import java.util.concurrent.locks.ReentrantLock;
class SaueRunnable implements Runnable {
private int hastighet;
private int startLengde = 80;
private static int sauer = 0;
private int sau = ++sauer;
private boolean running = true;
public SaueRunnable(int v, int s) {
hastighet = v;
startLengde = s;
}
private static int resultatTeller = 0;
private static final ReentrantLock resultatL?s = new ReentrantLock();
private int resultat = 0;
private static int hentResultat() {
resultatL?s.lock();
try {
return ++resultatTeller;
} finally {
resultatL?s.unlock();
}
}
@Override
public void run() {
int lengde = startLengde;
while (running) {
if (lengde < 0) {
running = false;
resultat = hentResultat();
System.out.printf("\033[%d;0H(%2d) ", sau, resultat);
} else {
System.out.printf("\033[%d;%dH? ", sau, lengde);
}
try {
Thread.sleep(hastighet);
} catch (InterruptedException e) {
running = false;
}
lengde--;
}
}
}