我相信能够将对象的监视器用作Lock
可能非常有用。那是 :
synchronized(object) {
...
}
相当于:
lock.lock();
try {
...
} finally {
lock.unlock();
}
据我了解,使用
Lock
接口(interface)是不可能实现的,因为同步仅发生在块中。我看到的解决方案是用一种额外的方法来丰富
java.lang.Object
public Lock asLock/getIntrinsicMonitorObject(); // Name isn't perfect but i'm not asking for that
或类似的东西:
LockSupport.getIntrinsicMonitorObject(Object of);
问题 :
tryLock
的事实不是一个事实)最佳答案
Unsafe
类*具有一些直接操作监视器的支持:
public native void monitorEnter(Object o);
public native void monitorExit(Object o);
public native boolean tryMonitorEnter(Object o);
*这是在Java 8中,但我认为Java 7中已经存在