java中の同期集合と同時集合


同期のセットは、**がsynchronizedを通じて同期のセットを実現すると簡単に理解できる。**複数のスレッドが同期セットを呼び出す場合、それらはシリアルで実行されます。
arrayListとvector、stack:
  • Vectorはスレッドの安全であり、ソースの中には多くのsynchronizedが見られますが、ArayListはそうではありません。結果としてVector効率はArayListに比べられない。
  • ArayListとVectorはいずれも線形連続記憶空間を採用しており、格納空間が不足している場合、ArayListのデフォルトは50%に増加し、Vectorのデフォルトは元の倍の
  • に増加した。
  • Vectorはcapacity Incrementを設定することができますが、ArayListはできません。文字どおりcapacity容量です。Incrementは増加し、容量が増加するパラメータ
  • です。
  • Stckは、Vectorに引き継がれ、動的配列に基づいて実現されるスレッドセキュリティのスタック
  • である。
  • arrayList、vector、Stockの共通点:ランダムアクセス速度が速く、挿入と除去性能が悪い(これは配列の特徴で、3つの下部は配列で実現される)
  • HashMapとHashtable:
  • HashMapはsynchronizedではなく、Hashtableはsynchronizedです。これは、Hashtableがスレッド安全であり、複数のスレッドがHashtable
  • を共有することができることを示している。
  • Hashtableはスレッドが安全であり、synchronizedでもあるので、シングルスレッド環境ではHashMapよりも
  • 遅いです。
  • HashMapはnullのキー値(key)と値(value)がありますが、Hashtableは不可能です。
    Collection:
    Collectionは、集合のためにさまざまな便利な動作を提供するツールクラスであり、それによって、集合の順序付け、検索、置換、同期制御、可変のセットの設定が可能である。
    Collections.synchronizedCollection(Collectiont)
    Collections.synchronizedList(Listlist)
    Collections.synchronizedMap(Mapmap)
    Collections.synchronizedSet(Set t)
    
    上のいくつかの方法は、Collectionツールクラスが、集合を同期集合に変えて、集合スレッドの安全問題を解決することである。
    同期集合は単スレッドの環境下ではスレッドの安全を保証することができますが、synchronized同期方式によりアクセス操作がシリアル化され、併発環境では効率が低下します。また、同期セットは、マルチスレッド環境における複合動作(反復、条件演算がなければ追加など)は、非スレッドセキュリティであり、クライアントコードがロックを実現する必要がある。
    同時集合はjdk 5.0の重要な特性であり、java.util.co ncurrent*を追加して発送しました。Javaメモリモデル、volatile変数およびAbstractQueue Synchronizer(AQS同期器と略称する)は、同時パッケージの多くの実現の基礎である。
    共通の同時集合:
  • ConccurrenthashMap:スレッド安全HashMapの実現
  • CopyOWriteArayList:スレッドが安全で、読み取り操作時にロックがないArayList
  • CopyOWriteAraySet:Copy OnWriteArayListに基づいて、重複要素を追加しない
  • ArayBlockingQue:配列、先入先出、スレッド安全に基づいて、指定された時間のブロッキングと読み書きが可能で、容量は
  • を制限することができます。
  • Linked Blocking Que:チェーンテーブルに基づいて実現し、読み書きはそれぞれ一つのロックを使って、高同時読み書き操作が多い場合、ArayBlocking Que
  • より性能が優れています。
  • CopyOWrite:集合とは書き込み時に複製された集合である。分かりやすいのは、**は、私たちが一つの集合に元素を添加する時、直接に現在の集合に追加しないで、先に現在の集合をCopyにして、新しい集合をコピーして、新しい集合に元素を追加してから、元の集合の引用を新しい集合に指します。このようにするメリット:**私たちはCopyOWriteの集合を同時に読むことができます。ロックをかける必要はありません。現在の集合にはいかなる要素も追加されません。だからCopyOWriteの集合も一種の読み書き分離の思想であり、読むことと書くことは異なる集合である。
  • 原文:https://blog.csdn.net/yuruixin_china/articale/detail/8282195