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

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


並行ハッシュマップは、jdk1.5で導入されたクラスです。同時ハッシュマップは、マップの追加または更新中にフラグメントと呼ばれるバケットレベルでのみロックを適用します。したがって、同時ハッシュマップを使用すると、マップへの読み取りと書き込みの同時操作が可能になります。

Synchronized hashmap(Collection.syncronizedHashMap())は、コレクションフレームワークのメソッドです。このメソッドは、コレクション全体にロックを適用します。したがって、1つのスレッドがマップにアクセスしている場合、他のスレッドは同じマップにアクセスできません。

同時ハッシュマップ 同期されたハッシュマップ
Sr。いいえ。 キー
1
実装
これは、並行ハッシュマップとシリアル化可能なインターフェイスを実装するクラスです。
これはCollectionクラスのメソッドです。
2
ロックメカニズム
部分をロックします
マップ全体をロックします。
3
パフォーマンス
同時ハッシュマップにより、読み取りと書き込みを同時に行うことができます。したがって、パフォーマンスは同期マップよりも比較的優れています。
複数のスレッドが同時にマップにアクセスすることはできません。したがって、パフォーマンスは同時ハッシュマップよりも比較的低くなります。
4
ヌルキー
キーまたは値としてnullを許可しません。
キーとしてnullを許可します。
5
同時変更の例外
同時変更例外をスローしません。
同期マップによるイテレータの戻りが同時変更例外をスローする

SynchronizedMapの例

public class SynchronizedMapExample {
   public static void main(String[] args) {
      Map<Integer,String> laptopmap = new HashMap<Integer,String>();
      laptopmap.put(1,"IBM");
      laptopmap.put(2,"Dell");
      laptopmap.put(3,"HCL");
      // create a synchronized map
      Map<Integer,String> syncmap = Collections.synchronizedMap(laptopmap);
      System.out.println("Synchronized map is : "+syncmap);
   }
}

ConcurrentHashMapの例

public class ConcurrentHashMapExample {
   public static void main(String[] args) {
      //ConcurrentHashMap
      Map<Integer,String> laptopmap = new ConcurrentHashMap<Integer,String>();
      laptopmap.put(1,"IBM");
      laptopmap.put(2,"Dell");
      laptopmap.put(3,"HCL");
      System.out.println("ConcurrentHashMap is: "+laptopmap);
   }
}

  1. Javaでのイテレータと列挙の違い

    IteratorとEnumerationはどちらも、コレクションの要素をトラバースしてアクセスするためのカーソルです。どちらもコレクションフレームワークに属しています。列挙は、コレクションフレームワークのJDK1.2バージョンのJDK1.0およびIteratorで追加されました。 コレクション内の要素への読み取り専用アクセス権があるため、列挙型はコレクション内の構造を変更できません。次の方法があります: * hasMoreElements() * nextElement() 一方、イテレータはコレクション内の要素を読み取って削除できます。以下の方法があります- * hasNe

  2. JavaでのArrayListとHashSetの違い

    HashSetとArrayListはどちらも、Javaコレクションフレームワークの最も重要なクラスの一部です。 以下は、ArrayListとHashSetの重要な違いです。 Sr。いいえ。 キー ArrayList ハッシュセット 1 実装 ArrayListはリストインターフェイスの実装です。 一方、 HashSetは、セットインターフェイスの実装です。 2 内部実装 ArrayListは、その実装のために配列を内部的に実装します。 HashSetは、実装にHashmapを内部的に使用します。 3 要素の順序 ArrayListは、挿入順序、つまり