I think using Futures this way just complicates your implementation and doesn't have any advantages ;-)
If you really want to implement something like a cache yourself than it could be enough to use an ordinary ConcurrentHashMap
for this purpose. With Java 8 it has even more nice features. I guess you'll find enough examples on Google.
Anyway, you probably should consider to use an existing caching framework or something like that for production use!