我相信能够将对象的监视器用作锁
会非常有用。那就是:
synchronized(object) {
...
}
相当于:
lock.lock();
try {
...
} finally {
lock.unlock();
}
据我所知,使用 Lock
接口(interface)是不可能实现的,因为同步只发生在 block 中。
我看到的一个解决方案是用一个额外的方法来丰富 java.lang.Object
public Lock asLock/getIntrinsicMonitorObject(); // Name isn't perfect but i'm not asking for that
或类似的东西:
LockSupport.getIntrinsicMonitorObject(Object of);
问题:
是否有一些充分的理由目前无法执行此操作(我认为某些
tryLock
当前不可能与同步不是一个事实)是否有使用现有 JRE 类的解决方案?
关于此的 JSR 是否有意义?
最佳答案
Unsafe
类* 支持直接操作监视器:
public native void monitorEnter(Object o);
public native void monitorExit(Object o);
public native boolean tryMonitorEnter(Object o);
*这是在 Java 8 中,但我认为它已经在 Java 7 中了
关于java - 对象内部监视器作为 java.util.concurrent.Lock,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22375370/