首页 > 解决方案 > 如何检查某个对象是否在 Java 中被锁定?

问题描述

对于对象的同步访问,以下模式很常见:

Object lock = new Object();

@GuardedBy("lock")
Object sharedObject;

其中锁用作同步(锁){}。注释很好,但没有强制执行。我想做这样的事情:

class SyncedReference<T> {

  Object lock;

  T value;

  SyncedReference(Object lock) {}

  T get() {
    if (!isLocked(lock)) {
      throw new IllegalStateException();
    }
    return value;
  }

  boolean isLocked() {
    // How to do this?
  }
}

我的问题是如何实现 isLocked() 方法?

标签: javaconcurrencysynchronizationmutex

解决方案


推荐阅读