問題タブ [concurrenthashmap]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
3015 参照

java - この ConcurrentHashMap から値を削除する方法>

以下の形式の ConcurrentHashMap があります。

このマップでは、配列リスト内の特定の値を削除したいと考えています。誰でもこれをガイドできますか?

EDIT1: マップがあります <"packet1"--><"NR1",[Pr1,Pr2]>> <"packet1"--><"NR2",[Pr1,Pr2]>>

map.get("packet1").get("NR1").remove("Pr2") を削除すると、NR1 と NR2 の両方から Pr2 が削除されます。Isnt は NR1 からのみ削除する必要があります。私を更新してください、

PS : NR1 と NR2 の両方の値を持つ同じキー packet1 の 2 回目のマップを更新します。

0 投票する
2 に答える
2266 参照

java - セットの Java ConcurrentHashMap のパターン

私がマルチスレッド アプリケーションで一般的に使用するデータ構造は、すべて同じキーを共有する項目のグループを保存する ConcurrentHashMap です。この問題は、特定のキー値の最初のアイテムをインストールするときに発生します。

私が使用してきたパターンは次のとおりです。

この操作を行うためのより良いパターンはありますか? これもスレッドセーフですか?Setよりも内側に使用するのに適したクラスはありjava.util.HashSetますか?

0 投票する
4 に答える
5219 参照

java - putIfAbsent を結合し、ConcurrentMap に置き換えます

必要なユースケースがあります

  • キーが ConcurrentHashMap に存在しない場合は、新しい値を挿入します
  • キーが ConcurrentHashMap に既に存在する場合、古い値を新しい値に置き換えます。新しい値は古い値から派生します (高価な操作ではありません)。

私は提供する次のコードを持っています:

それは正しく、スレッドセーフだと思いますか?

もっと簡単な方法はありますか?

0 投票する
5 に答える
8217 参照

java - 同時HashMap:サイズのチェック

同時ハッシュマップは、ハッシュマップに見られる同期の問題を解決できます。したがって、ハッシュマップとの同期キー作業を使用している場合、追加と削除は高速になります。複数のスレッドがconcurrentHashMapサイズをチェックする場合、ハッシュマップサイズをチェックするのはどうですか?同期キーワードはまだ必要ですか:次のようなものです:

0 投票する
2 に答える
498 参照

java - ConcurrentHashMapがあるので、Hashtableが必要ですか?

Javaのjava.util.Hashtable機能は。と同じjava.util.HashMapです。それらの主な違いは、Hashtableスレッドセーフであり、同期されてHashMapいないのに同期されることです。JDK5の時点で、ConcurrentHashMapマルチスレッドコンテキストに使用できるものがあります。よりも優れたパフォーマンスを発揮しHashtableます。Hashtableでは、将来使用する理由はありますか?

0 投票する
1 に答える
5183 参照

tomcat - JVM HeapDump: メモリは「java.util.concurrent.ConcurrentHashMap$Segment」の 1 つのインスタンスに蓄積されます

JVM ヒープに問題があります。

Apache HTTP Server と Apache Tomcat Application Server で Web サイトを運営しています。

Apache HTTP サーバーへのすべての *.jsp 要求は、Tomcat サーバー (プロトコル: ajp) にリダイレクトされます。

Web サイトには 10,000 を超える jsp ファイルがあります。

Google 検索アプライアンスもあり、毎晩ウェブサイトをクロールしています。

クロール中に、jvm ヒープ スペースが上限の 8 GB まで上昇します。

javamelody を使用すると、ロードされたクラスと同様にヒープ領域が増加することがわかります。

分析のために、ヒープダンプを取得しました。

Eclipse MAT からのレポートは次のとおりです。


「org.apache.catalina.loader.StandardClassLoader @ 0x7092c5148」によってロードされた「org.apache.jasper.servlet.JspServlet」の 1 つのインスタンスは、1'189'603'328 (96.75%) バイトを占有します。

メモリは、「」によってロードされた「java.util.concurrent.ConcurrentHashMap$Segment[]」の 1 つのインスタンスに蓄積されます。

キーワード

java.util.concurrent.ConcurrentHashMap$Segment[]

org.apache.catalina.loader.StandardClassLoader @ 0x7092c5148

org.apache.jasper.servlet.JspServlet


GSA リクエストに問題はありますか?

JVM が生成されたクラスをアンロードできないのはなぜですか?

0 投票する
3 に答える
18693 参照

java - ConcurrentHashMap ロック

ConcurrentHashMapで、マップ オブジェクト全体がロックされておらず、代わりにマップの一部がロックされていることをどこかで読みました。

誰かがロックがいつ登場するか詳しく説明できますか?

マップの読み取り中はロックは行われませんが、更新中はロックのみが使用されますか?

0 投票する
7 に答える
18579 参照

java - ConcurrentHashMap:「putIfAbsent」による余分なオブジェクトの作成を回避しますか?

マルチスレッド環境でキーの複数の値を集約しています。キーは事前にわかっていません。私はこのようなことをするだろうと思った:

私が目にする問題は、このメソッドを実行するたびに、の新しいインスタンスを作成する必要がありArrayList、それを破棄することです(ほとんどの場合)。これは、ガベージコレクターの不当な悪用のようです。メソッドを使用せずにこの種の構造を初期化する、より優れたスレッドセーフな方法はありますsynchronizerecordputIfAbsentメソッドに新しく作成された要素を返さないという決定と、(いわば)必要とされない限りインスタンス化を延期する方法がないことに、私は少し驚いています。

0 投票する
5 に答える
4657 参照

java - 並行ハッシュマップsize()メソッドの複雑さ

size()で呼び出されるメソッドが通常のHashMapConcurrentHashMapのメソッドと同じ複雑さであるかどうか疑問に思います。size()