ReentrantLock Класс

Определение

Повторное взаимное исключение Lock с тем же базовым поведением и семантикой, что и неявный монитор блокировки, доступ к которым осуществляется с помощью synchronized методов и инструкций, но с расширенными возможностями.

[Android.Runtime.Register("java/util/concurrent/locks/ReentrantLock", DoNotGenerateAcw=true)]
public class ReentrantLock : Java.Lang.Object, IDisposable, Java.IO.ISerializable, Java.Util.Concurrent.Locks.ILock
[<Android.Runtime.Register("java/util/concurrent/locks/ReentrantLock", DoNotGenerateAcw=true)>]
type ReentrantLock = class
    inherit Object
    interface ISerializable
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
    interface ILock
Наследование
ReentrantLock
Атрибуты
Реализации

Комментарии

Повторное взаимное исключение Lock с тем же базовым поведением и семантикой, что и неявный монитор блокировки, доступ к которым осуществляется с помощью synchronized методов и инструкций, но с расширенными возможностями.

ReentrantLock <A > является владельцем< или em> потоком последней успешной блокировки, но еще не разблокирован. Вызов потока lock возвращается, успешно получив блокировку, когда блокировка не принадлежит другому потоку. Метод возвращается немедленно, если текущий поток уже владеет блокировкой. Это можно проверить с помощью методов #isHeldByCurrentThreadи #getHoldCount.

Конструктор этого класса принимает необязательный <>параметр em fairness</em>. Если задано true, то блоки предпочитают предоставлять доступ к самому длинному потоку ожидания. В противном случае эта блокировка не гарантирует какой-либо определенный порядок доступа. Программы, использующие справедливые блокировки, к которым обращаются многие потоки, могут отображать более низкую общую пропускную способность (т. е. медленнее; часто гораздо медленнее), чем те, которые используют параметр по умолчанию, но имеют меньшие дисперсии в разы, чтобы получить блокировки и гарантировать отсутствие голода. Однако обратите внимание, что справедливость блокировок не гарантирует справедливость планирования потоков. Таким образом, один из многих потоков с использованием справедливой блокировки может получить его несколько раз в последовательности, в то время как другие активные потоки не выполняются и в настоящее время не удерживают блокировку. Кроме того, обратите внимание, что метод без времени #tryLock() не учитывает параметр справедливости. Это приведет к успешному успеху, если блокировка доступна, даже если другие потоки ожидают.

Рекомендуется <>сразу же следовать вызову < блока > в em alwayslock/emtry, как правило, в до/после строительства, например:

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

              public void m() {
                lock.lock();  // block until condition holds
                try {
                  // ... method body
                } finally {
                  lock.unlock();
                }
              }
            }}

Помимо реализации Lock интерфейса, этот класс определяет ряд publicprotected методов для проверки состояния блокировки. Некоторые из этих методов полезны только для инструментирования и мониторинга.

Сериализация этого класса ведет себя так же, как и встроенные блокировки: десериализированная блокировка находится в разблокированном состоянии независимо от его состояния при сериализации.

Эта блокировка поддерживает не более 2147483647 рекурсивных блокировок в одном потоке. Попытки превышения этого предела приводят к Error возникновению вызовов методов блокировки.

Добавлено в версии 1.5.

Java документации по java.util.concurrent.locks.ReentrantLock.

Части этой страницы — это изменения на основе работы, созданной и общей Project и используемых в соответствии с условиями, описанными в разделе "".

Конструкторы

Имя Описание
ReentrantLock()

Создает экземпляр .ReentrantLock

ReentrantLock(Boolean)

Создает экземпляр ReentrantLock с заданной политикой справедливости.

ReentrantLock(IntPtr, JniHandleOwnership)

Конструктор, используемый при создании управляемых представлений объектов JNI; вызывается средой выполнения.

Свойства

Имя Описание
Class

Возвращает класс среды выполнения этого Objectобъекта.

(Унаследовано от Object)
Handle

Дескриптор базового экземпляра Android.

(Унаследовано от Object)
HasQueuedThreads

Запрашивает, ожидают ли потоки получить эту блокировку.

HoldCount

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

IsFair

Возвращает значение true , если эта блокировка имеет значение true.

IsHeldByCurrentThread

Запросы, если эта блокировка хранится текущим потоком.

IsLocked

Запросы, если эта блокировка хранится любым потоком.

JniIdentityHashCode

Возвращает хэш-код удостоверения, назначенный этому Java одноранговой среде выполнения взаимодействия.

(Унаследовано от Object)
JniManagedPeerState

Повторное взаимное исключение Lock с тем же базовым поведением и семантикой, что и неявный монитор блокировки, доступ к которым осуществляется с помощью synchronized методов и инструкций, но с расширенными возможностями.

(Унаследовано от JavaObject)
JniPeerMembers

Возвращает метаданные JNI, используемые для вызова элементов этого Java однорангового узла.

Owner

Возвращает поток, который в настоящее время владеет этой блокировкой или null если он не принадлежит.

PeerReference

Возвращает ссылку на объект JNI для этого Java однорангового узла.

(Унаследовано от Object)
QueuedThreads

Возвращает коллекцию, содержащую потоки, которые могут ожидать получения этой блокировки.

QueueLength

Возвращает оценку количества потоков, ожидающих получения этой блокировки.

ThresholdClass

Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода.

ThresholdType

Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода.

Методы

Имя Описание
Clone()

Создает и возвращает копию этого объекта.

(Унаследовано от Object)
Construct(JniObjectReference, JniObjectReferenceOptions)

Повторное взаимное исключение Lock с тем же базовым поведением и семантикой, что и неявный монитор блокировки, доступ к которым осуществляется с помощью synchronized методов и инструкций, но с расширенными возможностями.

(Унаследовано от JavaObject)
Dispose()

Освобождает ресурсы, удерживаемые этим Java одноранговым узлом.

(Унаследовано от Object)
Dispose(Boolean)

Освобождает ресурсы, удерживаемые этим Java одноранговым узлом.

(Унаследовано от Object)
DisposeUnlessReferenced()

Повторное взаимное исключение Lock с тем же базовым поведением и семантикой, что и неявный монитор блокировки, доступ к которым осуществляется с помощью synchronized методов и инструкций, но с расширенными возможностями.

(Унаследовано от JavaObject)
Equals(Object)

Повторное взаимное исключение Lock с тем же базовым поведением и семантикой, что и неявный монитор блокировки, доступ к которым осуществляется с помощью synchronized методов и инструкций, но с расширенными возможностями.

(Унаследовано от JavaObject)
Equals(Object)

Указывает, равен ли другой объект этому объекту.

(Унаследовано от Object)
GetHashCode()

Возвращает хэш-значение кода для объекта.

(Унаследовано от Object)
GetWaitingThreads(ICondition)

Возвращает коллекцию, содержащую те потоки, которые могут ожидать заданного условия, связанного с этой блокировкой.

GetWaitQueueLength(ICondition)

Возвращает оценку количества потоков, ожидающих заданного условия, связанного с этой блокировкой.

HasQueuedThread(Thread)

Запрашивает, ожидает ли данный поток получения этой блокировки.

HasWaiters(ICondition)

Запрашивает, ожидают ли потоки заданного условия, связанного с этой блокировкой.

JavaFinalize()

Вызывается сборщиком мусора в объекте, когда сборка мусора определяет, что больше ссылок на объект нет.

(Унаследовано от Object)
Lock()

Получает блокировку.

LockInterruptibly()

Получает блокировку, если текущий поток не прерван потоком# прерывания.

NewCondition()

Возвращает экземпляр для использования с этим Condition экземпляромLock.

Notify()

Просыпается один поток, ожидающий монитора этого объекта.

(Унаследовано от Object)
NotifyAll()

Просыпает все потоки, ожидающие монитора этого объекта.

(Унаследовано от Object)
SetHandle(IntPtr, JniHandleOwnership)

Задает свойство Handle.

(Унаследовано от Object)
SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

Повторное взаимное исключение Lock с тем же базовым поведением и семантикой, что и неявный монитор блокировки, доступ к которым осуществляется с помощью synchronized методов и инструкций, но с расширенными возможностями.

(Унаследовано от JavaObject)
ToArray<T>()

Создает управляемый массив из этого Java оболочки массива.

(Унаследовано от Object)
ToString()

Возвращает строковое представление объекта.

(Унаследовано от Object)
TryLock()

Получает блокировку, только если она не удерживается другим потоком во время вызова.

TryLock(Int64, TimeUnit)

Получает блокировку, если она не удерживается другим потоком в течение заданного времени ожидания, и текущий поток не был прерван потоком# прерывания.

Unlock()

Пытается освободить эту блокировку.

UnregisterFromRuntime()

Отменяет регистрацию этого Java однорангового узла из среды выполнения взаимодействия.

(Унаследовано от Object)
Wait()

Приводит к тому, что текущий поток будет ждать, пока он не проснется, как правило, путем <><уведомления/>em или <эм>прерванного</em.>

(Унаследовано от Object)
Wait(Int64, Int32)

Приводит к тому, что текущий поток будет ждать, пока он не проснется, как правило, при <>получении уведомления</>em или <>эм прерваны< или> до тех пор, пока не истекло определенное количество реального времени.

(Унаследовано от Object)
Wait(Int64)

Приводит к тому, что текущий поток будет ждать, пока он не проснется, как правило, при <>получении уведомления</>em или <>эм прерваны< или> до тех пор, пока не истекло определенное количество реального времени.

(Унаследовано от Object)

Явные реализации интерфейса

Имя Описание
IJavaPeerable.Disposed()

Повторное взаимное исключение Lock с тем же базовым поведением и семантикой, что и неявный монитор блокировки, доступ к которым осуществляется с помощью synchronized методов и инструкций, но с расширенными возможностями.

(Унаследовано от JavaObject)
IJavaPeerable.Finalized()

Повторное взаимное исключение Lock с тем же базовым поведением и семантикой, что и неявный монитор блокировки, доступ к которым осуществляется с помощью synchronized методов и инструкций, но с расширенными возможностями.

(Унаследовано от JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

Повторное взаимное исключение Lock с тем же базовым поведением и семантикой, что и неявный монитор блокировки, доступ к которым осуществляется с помощью synchronized методов и инструкций, но с расширенными возможностями.

(Унаследовано от JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Повторное взаимное исключение Lock с тем же базовым поведением и семантикой, что и неявный монитор блокировки, доступ к которым осуществляется с помощью synchronized методов и инструкций, но с расширенными возможностями.

(Унаследовано от JavaObject)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Повторное взаимное исключение Lock с тем же базовым поведением и семантикой, что и неявный монитор блокировки, доступ к которым осуществляется с помощью synchronized методов и инструкций, но с расширенными возможностями.

(Унаследовано от JavaObject)
IJavaPeerable.SetPeerReference(JniObjectReference)

Повторное взаимное исключение Lock с тем же базовым поведением и семантикой, что и неявный монитор блокировки, доступ к которым осуществляется с помощью synchronized методов и инструкций, но с расширенными возможностями.

(Унаследовано от JavaObject)
IJavaPeerable.UnregisterFromRuntime()

Повторное взаимное исключение Lock с тем же базовым поведением и семантикой, что и неявный монитор блокировки, доступ к которым осуществляется с помощью synchronized методов и инструкций, но с расширенными возможностями.

Методы расширения

Имя Описание
GetJniTypeName(IJavaPeerable)

Возвращает имя JNI типа экземпляра self.

JavaAs<TResult>(IJavaPeerable)

Попробуйте принуждать к типуself, проверяяTResult, является ли приведение допустимым на стороне Java.

JavaCast<TResult>(IJavaObject)

Выполняет преобразование типа, проверяемого средой выполнения Android.

JavaCast<TResult>(IJavaObject)

Повторное взаимное исключение Lock с тем же базовым поведением и семантикой, что и неявный монитор блокировки, доступ к которым осуществляется с помощью synchronized методов и инструкций, но с расширенными возможностями.

TryJavaCast<TResult>(IJavaPeerable, TResult)

Попробуйте принуждать к типуself, проверяяTResult, является ли приведение допустимым на стороне Java.

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