question: private double doAcquire ( long permitsToAcquire , long currentTime ) { readRate . lock ( ) ; try { while ( true ) { long nanosPerPermit = this . nanosPerPermit ; long clockDelta = permitsToAcquire * nanosPerPermit ; long lowestAllowedClock = currentTime - backlogSize ; long currentClock = clock . get ( ) ; long nextClock = currentClock + clockDelta ; if ( nextClock < lowestAllowedClock ) nextClock = lowestAllowedClock ; if ( clock . compareAndSet ( currentClock , nextClock ) ) { if ( nextClock > currentTime ) return ( nextClock - currentTime ) / ( double ) nanosPerPermit ; else return 0.0 ; } } } finally { readRate . unlock ( ) ; } }
target:  Updates the clock based on the number of permits requested