В настоящее время я решаю проблему снижения производительности из-за сильной конкуренции за блокировку. Я рассматриваю "Блокирование разделения", чтобы решить эту проблему.
Шаблон использования скелета: ::
ТЕКУЩЕЕ ИСПОЛЬЗОВАНИЕ ::
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
?