Привет всем, когда я использую оператор synchronized, я часто использую этот паттерн:
private static Object lock = new Object();
public void F(){
//..
synchronized (lock){
//..
}
//..
}
Однако, в исходниках java.lang.Reference
, я вижу, что они используют этот паттерн вместо этого:
static private class Lock { };
private static Lock lock = new Lock();
public void run() {
//..
synchronized(lock){
//..
}
//..
}
Я хотел спросить, в чем преимущество объявления нового класса Lock (который в основном расширяет Object и больше ничего не делает)?
Или, скорее, почему они просто не использовали private static Lock lock = new Object();
?