请不要说 EHCache 或 OSCache 等等。出于这个问题的目的,假设我想使用 SDK (边做边学)来实现我自己的方法。考虑到缓存将在多线程环境中使用,您会使用哪些数据结构?我已经使用 LinkedHashMap和 集合 # synizedMap实现了一个,但是我很好奇是否有任何新的并发集合会是更好的候选者。
最新消息: 我正在通读 Yegge 是最新的的时候,发现了这个金块:
如果您需要常量时间访问并且希望维护插入顺序,那么 LinkedHashMap 是最好的选择,它是一个非常棒的数据结构。如果有一个并发版本,那么它可能会更加出色。但是,唉。
在我使用上面提到的 LinkedHashMap
+ Collections#synchronizedMap
实现之前,我的想法几乎完全一样。很高兴我没有忽略什么。
基于到目前为止的答案,对于一个高度并发的 LRU 来说,最好的办法是使用与 LinkedHashMap
相同的逻辑来扩展 ConcurrentHashMap。