Is there any difference between a lock created from a class and from an object?
class AWTInvocationLock {}
Object lock = new AWTInvocationLock();
public void foo(){
synchronized (lock) {
// ...
}
}
public Object lock = new Object();
public void bar(){
synchronized (lock) {
// ...
}
}
In java.awt
I see this code and I'm wondering about the idea of class AWTInvocationLock {}
instead of just new Object()
static void invokeAndWait(Object source, Runnable runnable)
throws InterruptedException, InvocationTargetException
{
// ...
class AWTInvocationLock {}
Object lock = new AWTInvocationLock();
InvocationEvent event =
new InvocationEvent(source, runnable, lock, true);
synchronized (lock) {
Toolkit.getEventQueue().postEvent(event);
while (!event.isDispatched()) {
lock.wait();
}
}
//...
}