Java token bucket rate limiter class

Java
public final class TokenBucket {
    private final int capacity;
    private final double refillPerNano;
    private double tokens;
    private long last = System.nanoTime();

    public TokenBucket(int capacity, double perSecond) {
        this.capacity = capacity;
        this.tokens = capacity;
        this.refillPerNano = perSecond / 1_000_000_000d;
    }

    public synchronized boolean tryAcquire() {
        long now = System.nanoTime();
        tokens = Math.min(capacity, tokens + (now - last) * refillPerNano);
        last = now;
        if (tokens < 1) return false;
        tokens -= 1;
        return true;
    }
}