Java中的线程安全过期多值映射

Java中的线程安全过期多值映射,java,multithreading,hashmap,Java,Multithreading,Hashmap,我正在寻找一个已经存在的线程安全的多值(一键->多值)映射的Java实现,该映射允许为每个值设置单独的基于时间的过期时间。创建后的过期策略是简单的TTL(生存时间) 我查看了以下可用的实现: :但它只支持缓存的全局过期 :它支持单个条目过期,但不支持一个键的多个值,每个值都有自己的TTL 我看到的是这样的情况: public interface ExpiringMultiValuedCache<K, V> { List<V> get(K key); v

我正在寻找一个已经存在的线程安全的多值(一键->多值)映射的Java实现,该映射允许为每个值设置单独的基于时间的过期时间。创建后的过期策略是简单的TTL(生存时间)

我查看了以下可用的实现:

  • :但它只支持缓存的全局过期
  • :它支持单个条目过期,但不支持一个键的多个值,每个值都有自己的TTL
我看到的是这样的情况:

public interface ExpiringMultiValuedCache<K, V> {
    List<V> get(K key);
    void set(K key, V value, long ttl, TimeUnit timeUnit);
    void remove(V value);
}
公共接口过期多值缓存{
列表获取(K键);
无效设置(K键、V值、长ttl、时间单位);
脱空(V值);
}

要求是,一个线程将不断地在映射中添加和删除条目,并且将有多个线程读取这些值(调用
get()

查看ehcache或memcached java客户端。两者都支持你的使用case@jontro我相信memcached java客户机仍然会得到memcached集群的支持?我正在寻找内存中的解决方案。那么我们来看看ehcache;)