Поделиться через


ReentrantLock.IsHeldByCurrentThread Свойство

Определение

Запрашивает, удерживается ли эта блокировка текущим потоком.

public virtual bool IsHeldByCurrentThread { [Android.Runtime.Register("isHeldByCurrentThread", "()Z", "GetIsHeldByCurrentThreadHandler")] get; }
[<get: Android.Runtime.Register("isHeldByCurrentThread", "()Z", "GetIsHeldByCurrentThreadHandler")>]
member this.IsHeldByCurrentThread : bool

Значение свойства

true Значение , если текущий поток удерживает эту блокировку, и false в противном случае

Атрибуты

Комментарии

Запрашивает, удерживается ли эта блокировка текущим потоком.

Как и для встроенных Thread#holdsLock(Object) блокировок монитора, этот метод обычно используется для отладки и тестирования. Например, метод, который следует вызывать только при удержании блокировки, может утверждать, что это так:

{@code
            class X {
              final ReentrantLock lock = new ReentrantLock();
              // ...

              public void m() {
                  assert lock.isHeldByCurrentThread();
                  // ... method body
              }
            }}

Его также можно использовать для обеспечения использования повторной блокировки без повторного входа, например:

{@code
            class X {
              final ReentrantLock lock = new ReentrantLock();
              // ...

              public void m() {
                  assert !lock.isHeldByCurrentThread();
                  lock.lock();
                  try {
                      // ... method body
                  } finally {
                      lock.unlock();
                  }
              }
            }}

Документация по Java для java.util.concurrent.locks.ReentrantLock.isHeldByCurrentThread().

Части этой страницы являются изменениями, основанными на работе, созданной и совместно используемой проектом Android и используемой в соответствии с условиями, Creative Commons 2.5 Attribution License.

Применяется к