問題タブ [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.
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 回目のマップを更新します。
java - セットの Java ConcurrentHashMap のパターン
私がマルチスレッド アプリケーションで一般的に使用するデータ構造は、すべて同じキーを共有する項目のグループを保存する ConcurrentHashMap です。この問題は、特定のキー値の最初のアイテムをインストールするときに発生します。
私が使用してきたパターンは次のとおりです。
この操作を行うためのより良いパターンはありますか? これもスレッドセーフですか?Set
よりも内側に使用するのに適したクラスはありjava.util.HashSet
ますか?
java - putIfAbsent を結合し、ConcurrentMap に置き換えます
必要なユースケースがあります
- キーが ConcurrentHashMap に存在しない場合は、新しい値を挿入します
- キーが ConcurrentHashMap に既に存在する場合、古い値を新しい値に置き換えます。新しい値は古い値から派生します (高価な操作ではありません)。
私は提供する次のコードを持っています:
それは正しく、スレッドセーフだと思いますか?
もっと簡単な方法はありますか?
java - 同時HashMap:サイズのチェック
同時ハッシュマップは、ハッシュマップに見られる同期の問題を解決できます。したがって、ハッシュマップとの同期キー作業を使用している場合、追加と削除は高速になります。複数のスレッドがconcurrentHashMapサイズをチェックする場合、ハッシュマップサイズをチェックするのはどうですか?同期キーワードはまだ必要ですか:次のようなものです:
java - ConcurrentHashMapがあるので、Hashtableが必要ですか?
Javaのjava.util.Hashtable
機能は。と同じjava.util.HashMap
です。それらの主な違いは、Hashtable
スレッドセーフであり、同期されてHashMap
いないのに同期されることです。JDK5の時点で、ConcurrentHashMap
マルチスレッドコンテキストに使用できるものがあります。よりも優れたパフォーマンスを発揮しHashtable
ます。Hashtable
では、将来使用する理由はありますか?
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 が生成されたクラスをアンロードできないのはなぜですか?
java - ConcurrentHashMap ロック
ConcurrentHashMap
で、マップ オブジェクト全体がロックされておらず、代わりにマップの一部がロックされていることをどこかで読みました。
誰かがロックがいつ登場するか詳しく説明できますか?
マップの読み取り中はロックは行われませんが、更新中はロックのみが使用されますか?
java - ConcurrentHashMap:「putIfAbsent」による余分なオブジェクトの作成を回避しますか?
マルチスレッド環境でキーの複数の値を集約しています。キーは事前にわかっていません。私はこのようなことをするだろうと思った:
私が目にする問題は、このメソッドを実行するたびに、の新しいインスタンスを作成する必要がありArrayList
、それを破棄することです(ほとんどの場合)。これは、ガベージコレクターの不当な悪用のようです。メソッドを使用せずにこの種の構造を初期化する、より優れたスレッドセーフな方法はありますsynchronize
かrecord
?putIfAbsent
メソッドに新しく作成された要素を返さないという決定と、(いわば)必要とされない限りインスタンス化を延期する方法がないことに、私は少し驚いています。
java - 並行ハッシュマップsize()メソッドの複雑さ
size()
で呼び出されるメソッドが通常のHashMapConcurrentHashMap
のメソッドと同じ複雑さであるかどうか疑問に思います。size()