1.hashtable(スレッドセーフ)
配列リストとして格納+ 1データ
ノードのハッシュ値によっては決定されたキー値または2で取得した割り出し位置格納する配列内の配列の長さを法
INT key.hashCode =ハッシュ()と、
int型のインデックス=(ハッシュ&0x7FFFFFFFで)tab.length%で、
エントリ<K、V> =エントリ(エントリ<K、V>)タブ[インデックス];
3.そのプットとして\一緒に取得し、他のパブリックメソッドのキーワード同期している
4を同一のスレッドをすべてハッシュテーブルの動作の例としては、ロックオブジェクト、スレッドはハッシュテーブルの同じインスタンスにアクセスするように、同じロックを競合する非効率有します
2.concurrentHashMap(スレッドセーフ)
1.配列+ +黒木、リンクリストとして格納されたデータは、同様に同じインデックス=指数(N - 1)&ハッシュハッシュマップ
2.読み取りサポート同時動作を制御します。
3.ハッシュマップ操作ツリーリストの配列を比較する並行処理のセキュリティ、ハードウェア・セキュリティ・メカニズムの使用を確保するために直接的な手段によって使用される安全でない方法で、メモリ動作を用います。
3.2同期同期主危険(CASアトミック操作)を介して、2つの方法で達成される
3.3。sizeCtl、位置のノードを取得すると、安全でない方法は、同時実行セーフの目的を達成するために使用されていますあなたは、ノードが同期の同期メカニズムによって、この位置でロックされたときにノードを設定するには、どこかに必要がある場合
します。https://www.cnblogs.com/zerotomax/p/8687425.html解決詳細首長約ConcurrentHashMapのソースコード
3.TreeMap(非スレッドセーフ)
1.保存された赤黒木の使用
のcompareTo 2.クエリノードを比較する使用は、キー値として設定されています
しばらく(!P = ヌル){ int型のcmp = k.compareTo(p.key)。 もし(CMP <0 ) 、P = p.left。 それ以外の 場合(CMP> 0 ) 、P = p.right。 他の リターンのp; }