Java
 Computer >> コンピューター >  >> プログラミング >> Java

HashMapとConcurrentHashMapの違い


Javaコレクションで知っているように、データを保持するための最も重要なデータ構造の1つです。コレクションには、マップ、セットリストなどの複数の実装があり、データストレージに最も価値があり、それに応じて操作します。これらの実装は、データストレージを効果的にするだけでなく、マルチスレッド環境でのデータ処理も可能にします。

>

コレクションの他のすべての実装の中で、ハッシュマップは、キーと値のペアでデータを格納する重要なコレクションの1つです。マルチスレッドのコンテキストでは、コンカレントコレクションと呼ばれるコレクションの実装がもう1つあります。これは、ハッシュマップのプロパティとともに、マルチスレッド環境でのデータ処理も可能にします。

これらのコレクションの両方の内部実装に基づいて、以下は重要な違いです。

Sr。いいえ。 キー HashMap ConcurrentHashMap
1 同時実行性 前述のように、このコレクションの両方の主な違いは同時実行性です。HashMapはスレッドセーフではありません。 一方、ConcurrentHashMapはスレッドセーフであり、マルチスレッド環境での使用に適しています。
2 実装 HashmapとConcurrentHashmapは、ストレージメカニズムにセグメントがあり、データをKey Valueペアに格納する場合、Hashmapには概念がないため、内部で異なる方法で実装されます。 一方、concurrentHashMapが初期化時にいくつかのセグメント[デフォルト16]に分割されるような方法でのConcurerentHashMapの実装。 ConcurrentHashMapを使用すると、同様の数(16)のスレッドがこれらのセグメントに同時にアクセスできるため、同時実行性が高いときに各スレッドが特定のセグメントで機能します。
3 導入 HashMapはJDK1.2で導入されました 一方、ConcurrentHashMapは、JDK1.5のSUNMicrosystemによって導入されました。
4 ヌル許可 上記のように、HashMapの場合、キーと値にnull値を使用できます。 一方、Concurrent HashMapでは、null値はキーにも値にも許可されておらず、そのようなエントリを試行すると、NullPointerExceptionという実行時例外が発生します。
5 同期 HashMapは、同期がないため、同時HashMapよりも優れています。 一方、ConcurrentHashMapのスレッドセーフは、同時実行レベルに基づいてマップ全体を異なるパーティションに分割し、マップ全体をロックするのではなく、特定の部分のみをロックすることで実現されます。
6 パフォーマンス HashmapをCollections.synchornizedMap(HashMap)でラップすることで同期できます。これにより、Hashtableとほぼ同等のコレクションが返され、Mapでのすべての変更操作がMapオブジェクトでロックされます。 上記のように、Collections.SynchronizedMap()メソッドを使用する必要があります。ConcurrentHashMapは複数のスレッドにマップにアクセスする機会を提供し、パフォーマンスを向上させるため、ConcurrentHashMap()の方が適しています。

  1. GoとJavaの違い。

    行く Goは手続き型プログラミング言語です。プログラムはパッケージを使用して組み立てられます。動的言語に似たパターンを採用する環境をサポートします。 Java Javaはオブジェクト指向プログラミング言語です。 Javaは静かで高速、信頼性が高く、安全です。最も広く使用されている言語でもあります。 GoとJavaの重要な違いは次のとおりです。 Sr。いいえ。 キー 移動 Java 1 タイプ Goは手続き型プログラミング言語であり、動的言語と同様のパターンをサポートしています。 Javaはオブジェクト指向プログラミング言語です。 2 クラスのサポート

  2. Javaでの同時ハッシュマップと同期ハッシュマップの違い

    並行ハッシュマップは、jdk1.5で導入されたクラスです。同時ハッシュマップは、マップの追加または更新中にフラグメントと呼ばれるバケットレベルでのみロックを適用します。したがって、同時ハッシュマップを使用すると、マップへの読み取りと書き込みの同時操作が可能になります。 Synchronized hashmap(Collection.syncronizedHashMap())は、コレクションフレームワークのメソッドです。このメソッドは、コレクション全体にロックを適用します。したがって、1つのスレッドがマップにアクセスしている場合、他のスレッドは同じマップにアクセスできません。 Sr。