Вот метод в CacheConfiguration, чтобы установить время жизни элемента в кэше http://ehcache.org/apidocs/net/sf/ehcache/config/CacheConfiguration.html#timeToLiveSeconds(long)
У него есть соответствующий аргумент в конструкторе кэша http://ehcache.org/apidocs/net/sf/ehcache/Cache.html#Cache%28java.lang.String,%20int,%20boolean,%20boolean,%20long,%20long%29
Это значения по умолчаниюдля элементов в particaluar-кэше - его можно указать и для точного элемента http://ehcache.org/apidocs/net/sf/ehcache/Element.html#setTimeToLive(int)
Вот небольшой пример его использования:
import java.util.concurrent.TimeUnit;
import net.sf.ehcache.Cache;
import net.sf.ehcache.CacheManager;
import net.sf.ehcache.Element;
public class EhCacheFixedExpirationTest {
public static void main(String[] args) {
CacheManager cacheManager = new CacheManager();
Cache testCache = new Cache("testCache", 100, false, false, 10, 10);
cacheManager.addCache(testCache);
Element element = new Element("1", "20");
element.setTimeToLive(1);
testCache.put(element);
long start = System.nanoTime();
while (testCache.get("1") != null) {
//wait
}
System.out.println(TimeUnit.MILLISECONDS.convert((System.nanoTime() - start), TimeUnit.NANOSECONDS));
}
}
Вывод почти всегда равен 1000, поэтому точностьдовольно хорошо.Используется Ehcache 2.4.6