如何在PassiveExpiringMap中获取TTL

时间:2018-03-20 17:40:41

标签: java collections

我按如下方式初始化PassiveExpiringMap

Map<String, Boolean> expiringMap;
expiringMap = new PassiveExpiringMap<>(1000));

现在,稍后我想要获取TTL(这里是1000)。我怎么能这样做呢?我发现有一些名为expirationTime的东西,但无法使用它。

谢谢!

1 个答案:

答案 0 :(得分:1)

不,这是不可能的(除非你诉诸某种涉及反思的解决方案)。

创建传递TTL的PassiveExpiringMap实例后,会创建一个ExpirationPolicyConstantTimeToLiveExpirationPolicy)将TTL传递给它。 TTL存储在实例变量timeToLiveMillis中,该变量是私有

您提到的expirationTime用于计算对象的到期时间(这只是当前时间,以毫秒为单位+您传递的TTL)。将对象插入地图时计算。

一种方法是创建一个包含PassiveExpiringMap和TTL的包装器对象,如

class ExpiringMapWithTTL {
    private Map<String, Boolean> expiringMap; 
    private long ttl;
    //Builder or Getters, Setter
}