検索
ホームページJava&#&チュートリアルJava で LRU キャッシュを実装する方法: LinkedHashMap と ConcurrentHashMap?

How to Implement an LRU Cache in Java: LinkedHashMap vs. ConcurrentHashMap?

Java での LRU キャッシュの開発

このコンテキストでは、LRU (最も最近使用されていない) キャッシュは、最も最近使用されていないキャッシュであると仮定します。エントリは保持する値が少ないため、キャッシュ容量を維持するために必要な場合に破棄できます。 Java でこれを実現するには、次のアプローチを検討してみましょう。

1. LinkedHashMap と同期

Collections#synchronizedMap で LinkedHashMap を使用することについて言及しました。これは有効なアプローチであり、LinkedHashMap の組み込みの二重リンク リスト構造を利用して LRU の動作を維持し、同期によってマルチスレッド環境でキャッシュが保護されます。

2.同時コレクション

新しい同時コレクションはパフォーマンスが向上していますが、組み込みの LRU 機能がありません。したがって、LinkedHashMap のロジックを組み込んで ConcurrentHashMap を拡張すると、高度な同時実行 LRU 実装を提供できます。

現在の実装

提案を検討した結果、次のことを選択しました。現時点では、LinkedHashMap Collections.synchronizedMap アプローチを使用します。将来これを再検討する場合、ConcurrentHashMap を拡張することが実行可能なオプションになる可能性があります。

参考までに、現在の実装のスニペットを以下に示します。

<code class="java">private class LruCache<a b> extends LinkedHashMap</a><a b> {
    private final int maxEntries;

    public LruCache(final int maxEntries) {
        super(maxEntries + 1, 1.0f, true);
        this.maxEntries = maxEntries;
    }

    // Check if the cache exceeds its maximum size
    @Override
    protected boolean removeEldestEntry(final Map.Entry</a><a b> eldest) {
        return super.size() > maxEntries;
    }
}

Map<string string> example = Collections.synchronizedMap(new LruCache<string string>(CACHE_SIZE));</string></string></a></code>

このキャッシュは、removeEldestEntry メソッドを利用して最小限のものを削除します。キャッシュが最大サイズに達したときに最近使用されたエントリは、LRU の動作を維持します。

以上がJava で LRU キャッシュを実装する方法: LinkedHashMap と ConcurrentHashMap?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。