public long acquire()

in concurrency-loadbalancer-core/src/main/java/com/uber/concurrency/loadbalancer/utils/IntervalLimiter.java [41:52]


    public long acquire() {
        long oldTick = this.lastTick.get();
        long newTick = this.ticker.read();
        long age = newTick - oldTick;
        if (age > intervalNano) {
            long newIntervalStartTick = newTick - age % intervalNano;
            if (this.lastTick.compareAndSet(oldTick, newIntervalStartTick)) {
                return age;
            }
        }
        return -1;
    }