code: @Override
  	public void run()
  	{
  		try {
  			while (true) {
  				final long start = System.currentTimeMillis();
  				synchronized (lock) {
  					long remaining = sweepInterval * 1000L;
  					while (remaining > 0) {
  						lock.wait(remaining);
  						remaining = start + sweepInterval * 1000 - System.currentTimeMillis();
  					}
  				}
  				cache.removeExpired();
  			}
  		}
  		catch (final InterruptedException e) {
  			// just let thread exit
  		}
  	}
docs: /* (non-Javadoc)
  @see java.lang.Thread#run()