從我所瞭解下面的代碼效率不高:我應儘量避免靜態同步方法
class Foo {
static Resource resource1;
static Resource resource2;
static synchronized void methodA() {
resource1.add("abc");
}
static synchronized void methodB() {
resource2.add("abc");
}
}
從就我的理解,這兩種方法鎖定在一個對象(類對象Foo.class
),所以我猜以下是一個很好的優化?
class Foo {
static Resource resource1;
static Resource resource2;
static void methodA() {
synchronized(resource1) {
resource1.add("abc");
}
}
static void methodB() {
synchronized(resource2) {
resource2.add("123");
}
}
}
只要兩個資源不相互依賴。
什麼時候應該考慮使用靜態同步方法?