Jonathan Halterman
Jonathan Halterman
A `Waiter` could certainly be used to wait for threads to be ready, or anything else. Each `resume()` call on a `Waiter` is similar to a `countDown()` on a `CountdownLatch`.
Can only be made to work when resumes are ensured to occur after awaits.
Edit: If you do a `map.get` while iterating on a `keySet` with `ExpirationPolicy.ACCESSED` you will get `ConcurrentModificationException` since the `get` can effectively modify the map by removing expired elements. Instead,...
@MohdArshil Are you iterating over keys while attempting to modify the map? Or are you doing some other operations?
ExpiringMap doesn't implement the iterator, it obtains it from an underlying data structure, so it doesn't have the opportunity to coordinate writes to the map with iteration. So we'd possibly...
While this is a straightforward change, it's also potentially dangerous since calling `shutdown` would effectively kill _all_ existing `ExpiringMap` instance expirations. I'm interested to get feedback from the community on...
How about making the expirer and expiration listener thread pools configurable, then the user can shut them down if they want. I left a few additional comments on that [here](https://github.com/jhalterman/expiringmap/issues/61#issuecomment-515290774)....
Which version are you using?
@rbkasat Can you provide a test case that demonstrates what you're seeing that doesn't depend on other code? I can't run what you provided.
@rbkasat I gotta ask - do you have a more straightforward way of reproducing this, that doesn't involve cloning a repo and firing up a web server? :)