21
JavaでLRUキャッシュをどのように実装しますか?
EHCacheやOSCacheなどは言わないでください。この質問のために、SDKだけを使用して独自に実装したいとします(実行することで学習します)。キャッシュがマルチスレッド環境で使用される場合、どのデータ構造を使用しますか?LinkedHashMapとCollections#synchronizedMapを使用してすでに実装していますますが、新しい並行コレクションのいずれかがより良い候補になるかどうかたいです。 更新:このナゲットを見つけたとき、私はちょうどイェッジの最新を読んでいました: 一定時間のアクセスが必要で、挿入順序を維持したい場合、本当に素晴らしいデータ構造であるLinkedHashMapよりも優れた方法はありません。それがおそらくもっと素晴らしいかもしれない唯一の方法は、並行バージョンがある場合です。しかし悲しいかな。 LinkedHashMap+ と一緒に行く前に、私はほぼ同じことを考えていましたCollections#synchronizedMap上記の実装に。私が何かを見落としただけではなかったことを知ってうれしい。 これまでの回答に基づくと、並行性の高いLRUに対する私の最善の策は、と同じロジックのいくつかを使用してConcurrentHashMapを拡張することLinkedHashMapです。