code: public void run()
  	{
  		while (true) {
  			final long start = System.currentTimeMillis();
  			long remaining;
  			Cache c;
  			synchronized (lock) {
  				c = cache;
  				remaining = sweepInterval * 1000;
  				while (remaining > 0 && cache != null) {
  					try {
  						lock.wait(remaining);
  					}
  					catch (final InterruptedException e) {}
  					remaining = start + sweepInterval * 1000 - System.currentTimeMillis();
  				}
  				if (cache == null)
  					break;
  			}
  			c.removeExpired();
  		}
  	}
docs: /* (non-Javadoc)
  @see java.lang.Thread#run()