@Override public void run(){
  while (!isInterrupted()) {
    try {
      KeyHolder<K> ref=(KeyHolder<K>)_queue.remove();
      V removed=_table.remove(ref);
      if (_listener != null && removed != null)       _listener.weakEntryRemoved(removed);
    }
 catch (    InterruptedException e) {
      interrupt();
      break;
    }
  }
}

@ Override public void run ( ) { while ( ! isInterrupted ( ) ) { try { KeyHolder < K > ref = ( KeyHolder < K > ) _queue . remove ( ) ; V removed = _table . remove ( ref ) ; if ( _listener != null && removed != null ) _listener . weakEntryRemoved ( removed ) ; } catch ( InterruptedException e ) { interrupt ( ) ; break ; } } }
block on the queue until an entry is been cleaned by the gc
