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


AtomicReferenceFieldUpdater Класс

Определение

Служебная программа на основе отражения, которая позволяет атомарным обновлениям назначенных volatile ссылочных полей назначенных классов.

[Android.Runtime.Register("java/util/concurrent/atomic/AtomicReferenceFieldUpdater", DoNotGenerateAcw=true)]
[Java.Interop.JavaTypeParameters(new System.String[] { "T", "V" })]
public abstract class AtomicReferenceFieldUpdater : Java.Lang.Object
[<Android.Runtime.Register("java/util/concurrent/atomic/AtomicReferenceFieldUpdater", DoNotGenerateAcw=true)>]
[<Java.Interop.JavaTypeParameters(new System.String[] { "T", "V" })>]
type AtomicReferenceFieldUpdater = class
    inherit Object
Наследование
AtomicReferenceFieldUpdater
Атрибуты

Комментарии

Служебная программа на основе отражения, которая позволяет атомарным обновлениям назначенных volatile ссылочных полей назначенных классов. Этот класс предназначен для использования в атомарных структурах данных, в которых несколько ссылочных полей одного узла независимо подвергаются атомарным обновлениям. Например, узел дерева может быть объявлен как

{@code
            class Node {
              private volatile Node left, right;

              private static final AtomicReferenceFieldUpdater<Node, Node> leftUpdater =
                AtomicReferenceFieldUpdater.newUpdater(Node.class, Node.class, "left");
              private static final AtomicReferenceFieldUpdater<Node, Node> rightUpdater =
                AtomicReferenceFieldUpdater.newUpdater(Node.class, Node.class, "right");

              Node getLeft() { return left; }
              boolean compareAndSetLeft(Node expect, Node update) {
                return leftUpdater.compareAndSet(this, expect, update);
              }
              // ... and so on
            }}

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

Аргументы объекта для параметров типа T , которые не являются экземплярами переданного #newUpdater класса, приведет к возникновению ClassCastException .

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

Документация по Java для java.util.concurrent.atomic.AtomicReferenceFieldUpdater.

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

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

AtomicReferenceFieldUpdater()

Защищенный конструктор do-nothing для использования подклассами.

AtomicReferenceFieldUpdater(IntPtr, JniHandleOwnership)

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

Свойства

Class

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

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

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

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

Служебная программа на основе отражения, которая позволяет атомарным обновлениям назначенных volatile ссылочных полей назначенных классов.

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

Служебная программа на основе отражения, которая позволяет атомарным обновлениям назначенных volatile ссылочных полей назначенных классов.

PeerReference

Служебная программа на основе отражения, которая позволяет атомарным обновлениям назначенных volatile ссылочных полей назначенных классов.

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

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

ThresholdType

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

Методы

AccumulateAndGet(Object, Object, IBinaryOperator)

Атомарно обновляет (с эффектами памяти, указанными VarHandle#compareAndSet) поле заданного объекта, управляемого этим обновлением, с результатами применения данной функции к текущим и заданным значениям, возвращая обновленное значение.

Clone()

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

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

Атомарно задает поле заданного объекта, управляемого этим обновлением, заданному обновленному значению, если текущее значение == ожидаемого значения.

Dispose()

Служебная программа на основе отражения, которая позволяет атомарным обновлениям назначенных volatile ссылочных полей назначенных классов.

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

Служебная программа на основе отражения, которая позволяет атомарным обновлениям назначенных volatile ссылочных полей назначенных классов.

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

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

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

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

GetAndAccumulate(Object, Object, IBinaryOperator)

Атомарно обновляет (с эффектами памяти, указанными VarHandle#compareAndSet) поле заданного объекта, управляемого этим обновлением, с результатами применения данной функции к текущим и заданным значениям, возвращая предыдущее значение.

GetAndSet(Object, Object)

Атомарно задает поле заданного объекта, управляемого этим обновлением, заданному значению, и возвращает старое значение.

GetAndUpdate(Object, IUnaryOperator)

Атомарно обновляет (с эффектами памяти, указанными VarHandle#compareAndSet) поле заданного объекта, управляемого этим обновлением, с результатами применения данной функции, возвращая предыдущее значение.

GetHashCode()

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

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

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

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

В конечном итоге задает поле заданного объекта, управляемого этим обновлением, заданному обновленному значению.

NewUpdater(Class, Class, String)

Создает и возвращает обработчик обновления для объектов с заданным полем.

Notify()

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

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

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

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

Задает поле заданного объекта, управляемого этим обновлением, заданному обновленному значению.

SetHandle(IntPtr, JniHandleOwnership)

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

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

Служебная программа на основе отражения, которая позволяет атомарным обновлениям назначенных volatile ссылочных полей назначенных классов.

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

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

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

Служебная программа на основе отражения, которая позволяет атомарным обновлениям назначенных volatile ссылочных полей назначенных классов.

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

Атомарно обновляет (с эффектами памяти, указанными VarHandle#compareAndSet) поле заданного объекта, управляемого этим обновлением, с результатами применения данной функции, возвращая обновленное значение.

Wait()

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

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

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

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

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

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

Атомарно задает поле заданного объекта, управляемого этим обновлением, заданному обновленному значению, если текущее значение == ожидаемого значения.

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

IJavaPeerable.Disposed()

Служебная программа на основе отражения, которая позволяет атомарным обновлениям назначенных volatile ссылочных полей назначенных классов.

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

Служебная программа на основе отражения, которая позволяет атомарным обновлениям назначенных volatile ссылочных полей назначенных классов.

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

Служебная программа на основе отражения, которая позволяет атомарным обновлениям назначенных volatile ссылочных полей назначенных классов.

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

Служебная программа на основе отражения, которая позволяет атомарным обновлениям назначенных volatile ссылочных полей назначенных классов.

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

Служебная программа на основе отражения, которая позволяет атомарным обновлениям назначенных volatile ссылочных полей назначенных классов.

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

Служебная программа на основе отражения, которая позволяет атомарным обновлениям назначенных volatile ссылочных полей назначенных классов.

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

Служебная программа на основе отражения, которая позволяет атомарным обновлениям назначенных volatile ссылочных полей назначенных классов.

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

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

JavaCast<TResult>(IJavaObject)

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

JavaCast<TResult>(IJavaObject)

Служебная программа на основе отражения, которая позволяет атомарным обновлениям назначенных volatile ссылочных полей назначенных классов.

GetJniTypeName(IJavaPeerable)

Служебная программа на основе отражения, которая позволяет атомарным обновлениям назначенных volatile ссылочных полей назначенных классов.

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