Collections 中級

レガシー同期コレクションからモダンな代替手段へ

VectorとHashtableを、実際の可変性と並行処理の要件に応じて選択したコレクションに置き換える。

✕ Legacy synchronized collection
Hashtable<String, Session> sessions = new Hashtable<>();
sessions.put(id, session);
✓ Concurrent Collections API
ConcurrentMap<String, Session> sessions = new ConcurrentHashMap<>();
sessions.put(id, session);
このコードに問題がありますか? お知らせください。
🎯

意図が明確な並行処理

選択した型により、共有を想定しているかどうかが明確になります。

⚡

優れたスケーラビリティ

ConcurrentHashMapは通常のアクセスでテーブル全体を単一のロックで保護することを避けます。

🧩

モダンなAPI

現在のコレクション操作やConcurrentMap操作と自然に連携します。

旧来のアプローチ
Hashtable
モダンなアプローチ
ConcurrentHashMap
JDKバージョン
5
難易度
中級
レガシー同期コレクションからモダンな代替手段へ
利用可能

JDK 5(2004年9月)以降、広く利用可能

VectorとHashtableは、レガシーAPIを通じてすべての操作を同期します。モダンなコードでは通常、スレッド内に限定されたデータにはArrayListまたはHashMapを使用し、共有されたデータを変更する必要がある場合には目的に特化した並行コレクションを使用します。