Java 缓存/作业跟踪框架

Java 缓存/作业跟踪框架,java,caching,jobs,Java,Caching,Jobs,我试图解决以下问题: 我有一些昂贵的工作要做,然后我将结果缓存起来 这件作品是用一根弦编的 对于同一密钥,许多请求可能同时到达 我希望避免每把钥匙做一次以上的工作 我想添加对键的回调,该键将在工作完成时调用;当作品首次提交时,并非所有这些都是已知的 这感觉像是一个应该已经解决的问题;有人知道有一个Java框架或库涵盖了它吗?我可以想象guava的LoadingCache周围有一个包装器,但我不知道有一个库可以做任何开箱即用的事情 虽然LoadingCache#get是同步的,但它确实可以让您

我试图解决以下问题:

  • 我有一些昂贵的工作要做,然后我将结果缓存起来
  • 这件作品是用一根弦编的
  • 对于同一密钥,许多请求可能同时到达
  • 我希望避免每把钥匙做一次以上的工作
  • 我想添加对键的回调,该键将在工作完成时调用;当作品首次提交时,并非所有这些都是已知的

这感觉像是一个应该已经解决的问题;有人知道有一个Java框架或库涵盖了它吗?

我可以想象guava的
LoadingCache
周围有一个包装器,但我不知道有一个库可以做任何开箱即用的事情

虽然
LoadingCache#get
是同步的,但它确实可以让您获得1-4个,使用
refresh
可能会有一些里程,它可以返回
ListenableFuture
(尽管要获得您列出的所有功能,它可能会变成一个相当粗的包装器?)

供参考:


无论C#中的锁是什么Java等价物,前四个看起来都非常简单。第五,可能与事件有关。石英可能会有帮助,但我不知道怎么做。