public class Race {
    public static void main(String[] args) {
        Counter c = new Counter();
        CountThread c1 = new CountThread(c, 1);
        CountThread c2 = new CountThread(c, -1);
        c1.start();
        c2.start();
        while (!c1.isFinished() || !c2.isFinished()) {
            System.out.print(".");
        }
        System.out.println();
        System.out.println("c: " + c.getX());
    }
}

class Counter {
    private int x = 0;
    
    public int getX() {return x;}
    public void increaseX(int incr) {x = x + incr;}
}

class CountThread extends Thread {
    private int incr;
    private Counter counter;
    private boolean finished;
    
    public CountThread(Counter c, int i) {
        counter = c;
        incr = i;
        finished = false;
    }
    
    public boolean isFinished() {return finished;}
    
    public void run() {
        for (int i = 0; i < 1000000; ++i) {
            counter.increaseX(incr);
        }
        finished = true;
    }
}
