package dk.thoerup.traininfoservice.banedk; import java.util.concurrent.ConcurrentHashMap; public class TimeoutCache { class CacheItem { public CacheItem(T v) { value = v; lastupdate = System.currentTimeMillis(); } public long lastupdate; public T value; } private ConcurrentHashMap> cache = new ConcurrentHashMap>(); private long timeout; public TimeoutCache(int timeout) { this.timeout = timeout; } public void put(K k, V v) { CacheItem item= new CacheItem(v); cache.put(k, item); } public V get(K k) { long now = System.currentTimeMillis(); CacheItem item = cache.get(k); if (item != null) { if ( (item.lastupdate+timeout) < now) { //item too old return null; } else { return item.value; //item still good } } else { return null; // no item found } } }