質(zhì)問(wèn)のとおり、ConcurrentHashMap のような高パフォーマンス クラスの具體的なビジネス使用シナリオは何ですか?
通常、コードを書(shū)くときに最もよく使用するのは HashMap であり、それに慣れています
でも、Javaには他にも高機(jī)能なMapがあるのですが、普段はあまり使わないような気がします
Baidu で検索したところ、HashMap と ConcurrentHashMap の違いしかわかりませんでした
しかし、どの具體的なビジネス利用シナリオでこれらのクラスが使用されるのかはわかりません
少し混亂しているので、先輩方にアドバイスをいただければ幸いです、ありがとうございます
ConcurrentHashMap は、同時(shí)実行を防止するための java.util.concurrent パッケージの下のツール クラスです。ビジネス用途では、獨(dú)自の同時(shí)実行クラスで ThreadLocal を?qū)g裝することもできます。 。 。
主にマルチスレッドで使用されます。以前のバージョンの Java では、同期された同期ブロックが使用されていましたが、ロックや解放などの問(wèn)題を解決するのは簡(jiǎn)単ではありませんでした。すべてが正式に Java で記述されたので、マルチスレッドに注目してください。 。 。
たとえば、ビジネス シナリオでは、會(huì)社の人事情報(bào)がマルチスレッド データベースに保存されている場(chǎng)合、java.util.List を使用すると、各スレッドのデータが不整合になります。この場(chǎng)合、同時(shí)実行ツールを使用する必要があります。クラス。注意すべき主な點(diǎn)は、寫(xiě)
データを読み取るときは問(wèn)題にならないということです。 。 。
ConcurrentHashMap は、複數(shù)のスレッドによるアクセス用に特別に設(shè)計(jì)されています。例:
リーリー同時(shí)にログインおよびログアウトするユーザーが多數(shù)いる場(chǎng)合、onUserSignIn()
和 onUserSignOut()
同時(shí)に呼び出されるスレッドが多數(shù)存在します。
お誘いありがとうございます。
まず知っておくべきこと:
複數(shù)のスレッドで保護(hù)されていないオブジェクトに対する操作を?qū)g行すると、全員のステータスが不一致になります。
內(nèi)部の要素が特定の要件を満たしている、特定の數(shù)以上であるなど、特定の條件下であれば、複數(shù)のスレッドを開(kāi)いて通常の hashMap を配置および削除できます。
ConcurrentHashMap
は、jdk 同時(shí)実行パッケージで提供される同時(shí)マップです。これにより、複數(shù)のスレッドがオブジェクトを操作するときにオブジェクトのコピーの不整合を効果的に防ぐことができます。
百度でシーンを検索できます。
その違いは言うまでもありません。
スレッドの安全性を確保するために、通常は Synchronize キーワードを使用します。ConcurrentHashMap を使用すると、面倒な Synchronize メソッドを使用する必要がなくなります。また、ConcurrentHashMap は通常、マルチスレッド狀況で使用されます。すべてのマルチスレッドがこの同時(shí)実行ツール クラスを使用できるわけではありません。