为了更一般地解决这个问题…
请记住,在方法上使用同步实际上只是简写(假设类是SomeClass):
synchronized static void foo() { ...}是相同的
static void foo() { synchronized(SomeClass.class) { ... }}和
synchronized void foo() { ...}是相同的
void foo() { synchronized(this) { ... }}你可以将任何对象用作锁。如果要锁定静态方法的子集,则可以
class SomeClass { private static final Object LOCK_1 = new Object() {}; private static final Object LOCK_2 = new Object() {}; static void foo() { synchronized(LOCK_1) {...} } static void fee() { synchronized(LOCK_1) {...} } static void fie() { synchronized(LOCK_2) {...} } static void fo() { synchronized(LOCK_2) {...} }}(对于非静态方法,你希望使锁成为非静态字段)



