2

現在、ロックの激しい競合によるパフォーマンス低下の問題を解決しています。この問題を解決するために「ロック分割」を検討しています。

スケルトンの使用パターンは::

現在の使用状況 ::

public class HelloWorld{

   public static synchronized method1(){
       //uses resource 1
   }
   public static synchronized method2(){
        //uses resource 2
   }

}

私のアプローチ ::

method1()method2()は同じリソースを使用しないため、ロックを分割することを考えています。現時点では、両方とも静的に同期されているため、両方ともクラス ロックを争っています。私はそれをに変更することを考えています::

public class HelloWorld{

   **private static Object resr1Lock = new Object();**

   public static method1(){
       synchronized(resrc1Lock){
            //uses resource 1
       }
   }

   **private static Object resr2Lock = new Object();** 
   public static method2(){
        synchronized(resrc2Lock){
             //uses resource 2
        }
   }

}

彼らは今、「クラスロック」またはresr1Lock/を争うのresrc2Lockでしょうか?

4

2 に答える 2

3

これで、2 つのオブジェクト「resr1Lock」/「resrc2Lock」が競合します。期待どおりに動作します。

于 2010-09-01T11:39:27.007 に答える
2

彼らはもはやオブジェクトのロックを争うことはClassないので、はい、これでその問題は解決します。

于 2010-09-01T11:40:39.967 に答える