code: public synchronized void put(T value, long timeToClearMins) {
          this.put(value);
          if (!this.hasMaintenanceThread()) {
              startMaintenanceThread();
          }
          timeMap.put(value.getCacheKey(), new Long(System.currentTimeMillis()
                  + (timeToClearMins * 60 * 1000)));
      }
docs: Adds an object to cache. There is no guarantee that this object will be there by the time
  the next get(key) is called. If no other references are pointing to the cached object,
  the supplied value are guaranteed to be removed from cache after timeToClearMins + 1 minutes.
  
  @param value
  @param timeToClearMins