我想要一个Java集合,具有以下特点:
- 将任意的
Object
映射到Object
(不仅限于String
或其他受限制的键) - 将用作缓存;如果键不在缓存中,则会计算值(这不必内置到集合中)
- 将从多个线程同时访问
- 将永远不会从中删除项目
- 必须非常高效地读取(缓存命中);写入时不一定高效(缓存未命中)
如果多个线程同时导致缓存未命中,则会产生冗余计算,这是可以接受的。典型情况是缓存最初由一个线程填充。
在线程不安全的哈希表周围使用synchronized
块无法满足高效读取的标准。线程本地缓存很简单,但意味着新线程很昂贵,因为它们具有缓存的完整副本。
Java 1.5内置函数或我们可以复制到我们的MIT许可项目中的一个或少量类文件优先考虑,而不是大型外部库。