update(key, value)]
メソッド [が を更新するマルチスレッド Java アプリケーションがありますConcurrentHashMap
。キーごとに、マップに配置できるよりも多くの値が受信されるため、キーが更新されると、待機中のスレッドの最新の値のみを使用して、マップを再度更新する必要があります。それとも、待機中のスレッドが 1 つしかない場合に使用できるある種のロックがあるかもしれません - 最後にロックに到達したスレッド (既に待機しているスレッドを事実上破棄します)。マップ全体がロックされていないことが重要です。そのため、HashMap
キー A で待機しているスレッドが存在する場合でも、キー B は更新されない限りキー B を更新できるようにする必要があるため、法線の周りで同期ブロックを使用していません。スレッドは、B に格納された値をすでに更新しています。
もっと簡潔に言えば、キーと値のペアが更新よりも速く受信されているマップを、最後に受信した値を次の更新として使用して更新するにはどうすればよいでしょうか? したがって、A が 1 に更新されるときに、5、3、6、8 の値が受信されます。これは、A の次の更新が 8 になることを意味します。