Chyba - synchronizovat "málo"

class Counter {
    private static int currentValue = 0;
    public synchronized int next() {
        return ++currentValue;
    }
}
[Poznámka] Poznámka

Při volání next se zamyká pouze instance Counter, nikoli sdílená hodnota (protože ta je static, společná všem objektům Counter).