Javaの高度同時学習 - デッドロック(A)

デッドロックのために必要な条件が発生します。

   図1に示すように、相互に排他的な条件

   2、要求条件と保持

   3、資源が奪われていない条件

    4、ループ待ち状態

 

同時マルチスレッドのベストプラクティス。

  1、ローカル変数の使用

   2、不変クラス

   図3に示すように、ロック範囲の範囲を最小限にするために:S = 1 /(1-A + A / N)(ダールミュー法則)

ここで、シリアル比例演算部、N個の並列の処理ノードの数です。したがって、場合= 0、最大加速度= N比S; = 1のとき、最小のスピードアップS = 1;場合N→∞、限界加速度 Sの比→高速化の上限値である1 /、 。コード全体の25%がシリアルコードである場合、例えば、並列処理の全体的な性能は、4を超えることはできません。この式は、学界に受け入れられており、「アムダールの法則」(アムダールの法則)と呼ばれていました。

   4、代わりに新しいスレッド()を使用する、スレッドプールエグゼキュータを使用して、

   5、同期は使用しないでくださいではなく)((待つ)と通知

    6、BlockingQueueのは、生産者 - 消費者モデルを実現します

   代わりに、同期コレクションロックを追加するの並行と併せて7、

   8、有界のアクセスを作成するために、セマフォを使用して

  9、むしろ同期させる方法を使用していない同期コードブロックを使用

  10、静的変数の使用を避けます

 

ハッシュマップ和のConcurrentHashMap

   最終の2つのパラメータは、負荷容量と膨張係数をハッシュマップします。

   負荷がメモリの現在の使用容量及び製品膨張係数を超える場合には、拡張のためのハッシュマップではなく、スレッドセーフになり、同時コールの時、無限ループの膨張過程で発生し得ます。

 差分concurrenthashmap1.7バージョン1.8とバージョン1.8をリスト8以上の数は、それが赤黒木をトリガする赤黒木に導入され、赤黒木アドレッシング時間は、リストに対応しつつ、O(LOGN)であります時間はO(N)

 

 

キャッシングを学びます:

 ヒット率=ヒット/(ヒット+ミス)

 スペースの最大の要素:

 クリアキャッシュポリシー:ランダムFIFO、LFU、LRU、有効期限、

 

ビジネスシナリオとビジネスニーズ:小さなアプリケーションシナリオを読み、書くためのキャッシュ

 

グァバキャッシュ:のConcurrentHashMapのデザインのアイデアを継承

 

おすすめ

転載: www.cnblogs.com/wcgstudy/p/11525351.html