我相信能够将对象的监视器用作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的事实不是一个事实)
  • 是否有一些解决方案可以使用现有的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中已经存在

    10-08 13:40
    查看更多