public final class Counter {
private long value = 0;
public synchronized long getValue() {
return value;
}
public synchronized long increment() {
if(value == Long.MAX_SIZE) {
throw new IllegalStateException("counter overflow")
}
return ++counter;
}
}