public void advance ( long currentTimeNanos ) { long previousTimeNanos = nanos ; try { nanos = currentTimeNanos ; for ( int i = 0 ; i < SHIFT . length ; i ++ ) { long previousTicks = ( previousTimeNanos >> SHIFT [ i ] ) ; long currentTicks = ( currentTimeNanos >> SHIFT [ i ] ) ; if ( ( currentTicks - previousTicks ) <= 0L ) { break ; } expire ( i , previousTicks , currentTicks ) ; } } catch ( Throwable t ) { nanos = previousTimeNanos ; throw t ; } }
Advances the timer and evicts entries that have expired .