質問のとおり、ConcurrentHashMap のような高パフォーマンス クラスの具体的なビジネス使用シナリオは何ですか?
通常、コードを書くときに最もよく使用するのは HashMap であり、それに慣れています
でも、Javaには他にも高機能なMapがあるのですが、普段はあまり使わないような気がします
Baidu で検索したところ、HashMap と ConcurrentHashMap の違いしかわかりませんでした
しかし、どの具体的なビジネス利用シナリオでこれらのクラスが使用されるのかはわかりません
少し混乱しているので、先輩方にアドバイスをいただければ幸いです、ありがとうございます
某草草2017-06-28 09:25:10
ConcurrentHashMap は、同時実行を防止するための java.util.concurrent パッケージの下のツール クラスです。ビジネス用途では、独自の同時実行クラスで ThreadLocal を実装することもできます。 。 。
主にマルチスレッドで使用されます。以前のバージョンの Java では、同期された同期ブロックが使用されていましたが、ロックや解放などの問題を解決するのは簡単ではありませんでした。すべてが正式に Java で記述されたので、マルチスレッドに注目してください。 。 。
たとえば、ビジネス シナリオでは、会社の人事情報がマルチスレッド データベースに保存されている場合、java.util.List を使用すると、各スレッドのデータが不整合になります。この場合、同時実行ツールを使用する必要があります。クラス。注意すべき主な点は、写
データを読み取るときは問題にならないということです。 。 。
欧阳克2017-06-28 09:25:10
ConcurrentHashMap は、複数のスレッドによるアクセス用に特別に設計されています。例:
リーリー同時にログインおよびログアウトするユーザーが多数いる場合、onUserSignIn()
和 onUserSignOut()
同時に呼び出されるスレッドが多数存在します。
黄舟2017-06-28 09:25:10
お誘いありがとうございます。
まず知っておくべきこと:
複数のスレッドで保護されていないオブジェクトに対する操作を実行すると、全員のステータスが不一致になります。
内部の要素が特定の要件を満たしている、特定の数以上であるなど、特定の条件下であれば、複数のスレッドを開いて通常の hashMap を配置および削除できます。
ConcurrentHashMap
は、jdk 同時実行パッケージで提供される同時マップです。これにより、複数のスレッドがオブジェクトを操作するときにオブジェクトのコピーの不整合を効果的に防ぐことができます。
百度でシーンを検索できます。
巴扎黑2017-06-28 09:25:10
その違いは言うまでもありません。
スレッドの安全性を確保するために、通常は Synchronize キーワードを使用します。ConcurrentHashMap を使用すると、面倒な Synchronize メソッドを使用する必要がなくなります。また、ConcurrentHashMap は通常、マルチスレッド状況で使用されます。すべてのマルチスレッドがこの同時実行ツール クラスを使用できるわけではありません。