ここで説明されているように:JavaのConcurrentHashMap?Javaでの並行ハッシュマップはスレッドセーフです。JavaコントローラーはWeb要求用であり、Webから同時に呼び出すことができます。
私の質問は次のとおりです。Javaでハッシュマップの代わりに同時ハッシュマップを使用する必要がありますか?
ここで説明されているように:JavaのConcurrentHashMap?Javaでの並行ハッシュマップはスレッドセーフです。JavaコントローラーはWeb要求用であり、Webから同時に呼び出すことができます。
私の質問は次のとおりです。Javaでハッシュマップの代わりに同時ハッシュマップを使用する必要がありますか?
必要なのは、ConcurrentHashMap
1つまたは2つの同時書き込みと一緒に同時読み取りを行う場合のみです。初期化後にマップを変更しない場合は、通常の方法HashMap
で十分です。
通常、コントローラーには要求固有の状態を含めないでください(このような状態はパラメーターとしてメソッドに渡す必要があります)。このようにコントローラーを設計する場合は、コントローラー内で同期をとる必要はありません。
同じハッシュマップにアクセスする複数のスレッドがある場合は、このアクセスを同期する必要があります。
これを行うには、ConcurrentHashMapのようにこれがすでに実装されているオブジェクトを使用するか、独自の同期コードを記述してプレーンなHashMapを使用します。