private void updateLru(CacheItem<K,V> item){
  long lruCounter=_lruCounter;
  long itemCounter=item._lruCounter;
  long delta=(lruCounter - itemCounter) & 0x3fffffff;
  if (_lruTimeout < delta || delta < 0) {
    updateLruImpl(item);
  }
}

private void updateLru ( CacheItem < K , V > item ) { long lruCounter = _lruCounter ; long itemCounter = item . _lruCounter ; long delta = ( lruCounter - itemCounter ) & 0x3fffffff ; if ( _lruTimeout < delta || delta < 0 ) { updateLruImpl ( item ) ; } }
put item at the head of the used - twice lru list . this is always called while synchronized .
