以下の回答に基づいて: それでも私にはわかりません:もしあれば、concurrentMapの同期コンストラクトは何をしますか?すなわち、同時マップの場合、同期された(マップ)対非同期の間の違いは何か。 私は解決策の正当性や信念には興味がありません。質問への回答: Q:並行したマップでの同期と同じではない同期の違いは何ですか?パフォーマンスに関して特に...十分です。何もしてください。
私は何が起こるかにのみ興味があり、補足的なアドバイスはありません。同期コレクションで同期化 - >パフォーマンスの問題
私は、精神的な問題を解決するための理論的な質問があります。 Concurrent Collectionクラスが=> ConcurrentHashMap mapと仮定します。
私は三つの方法があると仮定:
- TestCase1:
method1: synchronized(map){ doSomethingWithThemap(); //Assume put integers 1.. 1000000 } method2:doSomethingWithThemap(); //Note it is not synchronized method3:doSomethingElseWithThemap(); //Assume put integers 2000000.. 3000000
を次に2つのテストケースを想定& B. Aは、法1を呼び出し、Bが法3を呼び出す2スレッドを生成します。
- TestCase2:2つのスレッドA '& B'を生成します。 A 'はmethod2を呼び出し、B'はmethod3を呼び出します。
パフォーマンスの観点からは、私が理解しているところでは、TestCase1 Bでは同期されたブロックがマップ上にロックを保持するため、同時ではあるがマップに追加できないため、これはTestCase2のケースではありません。
私のユニットテストこの仮説は検証しないでください。
Q:ここでは何が欠けていますか?つまり、同時収集で同期ブロックが与えられると、パフォーマンスには全く影響がありませんか?
method1は100万の整数をマップに入れ、method2は何をしますか? – esej
同期していないブロックと全く同じものです。 –