Take a look at the AsyncCacheLoader. I implemented a configuration key that changed the default behavior of the "put" and "remove" operations.
If you can come up with a decent patch, create a JIRA issue, attach the patch and link the issue to this forum URL. You may also be asked to provide some documentation.
Probably "put(k,v)" and "remove" should lose their return value, and if the value is of interest, a user can use "get(k)" anyway.
Hmmm. Interesting. I see the general idea of what you're doing. We'll take a look at adding that functionality for synchronous gets. We also may end up declaring that the performance penalty for our expected use case is small enough that we'll live with it as it is. Thanks.