اكتساب القفل على الأعضاء الثابتة في فصل جافا
-
26-09-2019 - |
سؤال
أقوم حاليًا بحل مشكلة تدهور الأداء بسبب خلاف القفل الثقيل. أنا أفكر في "تقسيم القفل" لحل هذه المشكلة.
نمط الاستخدام الهيكلي هو ::
الاستخدام الحالي ::
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
?
المحلول
سوف يتنافسون الآن على كائنين "Resr1lock"/"Resrc2lock. سيعمل كما تتوقع.
نصائح أخرى
لن يتنافسون على قفل على Class
الكائن بعد الآن ، نعم هذا سيحل هذه المشكلة.
لا تنتمي إلى StackOverflow