21
您将如何在Java中实现LRU缓存?
请不要说EHCache或OSCache等。出于这个问题的目的,假设我想仅使用SDK来实现自己的实现(边做边学)。考虑到缓存将在多线程环境中使用,您将使用哪些数据结构?我已经使用LinkedHashMap和Collections#synchronizedMap实现了一个,但是我很好奇是否有任何新的并发集合会更好。 更新:当我发现这个块时,我只是在阅读Yegge的最新文章: 如果您需要固定时间的访问权限并希望保持插入顺序,那么做一个比一个真正出色的数据结构LinkedHashMap更好的选择。可能更妙的唯一方法是如果有并发版本。可惜。 在进行上面提到的LinkedHashMap+ Collections#synchronizedMap实现之前,我在想几乎完全相同的事情。很高兴知道我不仅忽略了某些东西。 根据到目前为止的答案,听起来对于高并发LRU来说,我最好的选择是使用一些使用相同的逻辑来扩展ConcurrentHashMapLinkedHashMap。