Как бы вы реализовали кэш LRU в Java?



пожалуйста, не говорите EHCache или OSCache и т. д. Предположим, что для целей этого вопроса я хочу реализовать свой собственный, используя только SDK (обучение на практике). Учитывая, что кэш будет использоваться в многопоточной среде, какие структуры данных вы бы использовали? Я уже реализовал один с помощью LinkedHashMap и коллекции#synchronizedMap, но мне любопытно, будут ли какие-либо из новых параллельных коллекций лучшими кандидатами.

обновление: я был просто читаю Yegge это когда я нашел этот самородок:

Если вам нужен постоянный доступ и вы хотите поддерживать порядок вставки, вы не можете сделать лучше, чем LinkedHashMap, действительно замечательная структура данных. Единственный способ, которым это могло бы быть более замечательным, - это если бы была параллельная версия. Но увы.

Я думал почти то же самое, прежде чем я пошел с LinkedHashMap + Collections#synchronizedMap реализация я уже упоминал выше. Приятно знать, что я не просто что-то упустил.

основываясь на ответах до сих пор, похоже, что мой лучший выбор для очень параллельного LRU будет заключаться в расширении ConcurrentHashMap используя некоторые из той же логики, что LinkedHashMap использует.

275   0  
    Ничего не найдено.

Добавить ответ:
Отменить.