code: protected TimedEntry<K, V> removeAndListener(Object key,final boolean expire)
  	{
  		final TimedEntry<K, V> entry=entryMap.remove(key);
  		try {
  			if(entry!=null)
  			{//通知被移除
  				final EventListener<K, V> listener=entry.listener;
  				entry.setListener(null);
  				if(listener!=null)
  				{
  					lisenterExecutor.execute(new Runnable() {
  						@Override
  						public void run() {
  							try {
  								listener.removed(entry.getKey(),entry.getValue(),expire);
  							} catch (Throwable e) {
  								log.error(e.getMessage(),e);
  							}
  						}
  					});
  				}
  			}
  		} catch (Exception e) {
  			log.error(e.getMessage(),e);
  		}
  		return entry;
  	}
docs: 移除缓存对象并通知事件
  @param key
  @param expire 是否超时才执行的移除
  @return