更新をさぼっています。言うことで適当なエントリーを書いてみます。容易に安全に並行処理を実現するために作られました。スローすることがあります。ロックを取得すると他のスレッドからアクセスを禁じられます。スローすることはありません。つのスレッドだけしか反復子を使用できません。エントリーのキーや値にnullを使用できますが、ConcurrentHashMapでは使用できません。ロックストライピングと言われる粒度の小さなロック方式を採用しています。魅力的な存在となります。便利に使うにはまだまだパーツが揃っていませんでした。便利に使えそうだったのはアトミックに実行される下記メソッドくらいでした。追加された便利な機能をいくつか試してみます。いうネーミングから何をやってもスレッドセーフだと思い込んでしまうと泣きます。値の更新があるとします。なることを期待しますが残念なことになります。value);});}}}このプログラムの実行結果は次のようになります。75更新処理まではスレッドセーフでないということですね。追加されたクラスです。クラスを使って修正したプログラムは下記のようになります。value);});}}}このプログラムの実行結果は次のようになります。80期待通りにうごいてくれました。変更するのも面倒ですよね。素敵な修正プログラムを紹介します。下記のようなアトミック操作をするメソッドを利用します。メソッドは、指定されたキーと現在マップされている値に対するマッピングの計算を試みます(現在のマッピングが存在しない場合はnull)。メソッドは、指定されたキーの値が存在する場合、キーと現在マップされている値から新しいマッピングの計算を試みます。メソッドは、指定されたキーがまだ(nullでない)値と関連付けられていない場合は、指定された値に関連付けます。それ以外の場合は、指定された再マッピング関数の結果で値を置換し、nullの場合は削除します。メソッドを使ってみました。他のメソッドの使用例はコメントアウトして記述してあります。プログラムは下記のようになります。value);});}}}このプログラムの実行結果は次のようになります。使うなどの方法がありました。追加されたスレッドセーフなバルクオペレーションを試してみます。追加された機能の一部を試してみました。-------------");}}このプログラムの実行結果は次のようになります。————-それでは、プログラムをざっくり追ってみましょう。行目のコードで行っています。生成してデータを挿入しています。行目でマッピング数を取得しています。ドキュメントによると次のように書かれています。マッピングの数を返します。ConcurrentHashMapにはintで表すことができる数より多くのマッピングが含まれている可能性があるため、size()のかわりにこのメソッドを使用するようにしてください。返される値は推定値であり、挿入や削除が同時に行われた場合、実際のカウントは異なる可能性があります。使うことができるようになったようですね。種類用意されています。ような関数を含むものもあり便利に使えます。action)を使っています。このオペレーションを並列的に実行するために必要な(推定の)要素数となっています。