从我所了解下面的代码效率不高:我应尽量避免静态同步方法
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");
}
}
}
只要两个资源不相互依赖。
什么时候应该考虑使用静态同步方法?