expiringmap
expiringmap copied to clipboard
What about a ExpirationPolicy.ONLY_IF_ACCESSED?
- entry expires only if it has been accessed
- this could be useful especially in conjunciton with
.maxSize
to expire entries only a set time after they have been accessed butmaxSize
prevents the map from growing out of control - in some unpredictable situations (like waiting for responses across the network), this could be useful when you need to keep some data in a map until you receive a confirmation request. Then you don't need it for much longer afterwards because your code is not depending upon external slowdown factors
How would this be different than ExpirationPolicy.ACCESSED
?
I was under the impression that ACCESSED will expire entries even if they are never accessed?
That's right - so how would ONLY_IF_ACCESSED work - start the timer for an entry after it's accessed for the first time, and reset after each subsequent access?
nah, I was just thinking leave it in the map.. and if it is never accessed, it never expires. However, to prevent it from growing out of control the user could set maxSize to have it expire entries that way (just in case)
however, probably a good idea to throw an exception if maxSize is not set to be very safe )
ok maybe this feature is a "would be nice" thing that could cause problems...
This would indeed be useful, with such a policy there would be no need for any timers/threads. The expiration time would only be checked when the entry is accessed to check if it should be returned or not. It would decrease the overhead and complexity of the ExpiringMap
while still being useful when the map size growing too big is not a concern.