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 保证比其他原子类中要弱。 由于此类无法确保字段的所有用法都适用于原子访问目的,因此它只能保证仅针对同一更新程序上的 和 set 的其他调用compareAndSet的原子性。

类型参数 T 的对象参数不是传递给 #newUpdater 的类的实例将导致 ClassCastException 引发 。

在 1.5 中添加。

java.util.concurrent.atomic.AtomicReferenceFieldUpdaterJava 文档。

此页面的某些部分是基于 创建和共享的工作进行的修改,并根据 署名许可中所述的条款使用。

构造函数

AtomicReferenceFieldUpdater()

供子类使用的受保护无用构造函数。

AtomicReferenceFieldUpdater(IntPtr, JniHandleOwnership)

创建 JNI 对象的托管表示形式时使用的构造函数;由运行时调用。

属性

Class

返回此 Object的运行时类。

(继承自 Object)
Handle

基础 Android 实例的句柄。

(继承自 Object)
JniIdentityHashCode

一种基于反射的实用工具,允许对指定类的指定 volatile 引用字段进行原子更新。

(继承自 Object)
JniPeerMembers

一种基于反射的实用工具,允许对指定类的指定 volatile 引用字段进行原子更新。

PeerReference

一种基于反射的实用工具,允许对指定类的指定 volatile 引用字段进行原子更新。

(继承自 Object)
ThresholdClass

此 API 支持 Mono for Android 基础结构,不应直接从代码中使用。

ThresholdType

此 API 支持 Mono for 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> 或 <em>interrupted</em>。<>

(继承自 Object)
Wait(Int64)

导致当前线程等待,直到它被唤醒,通常是通过 em <通知/em> 或 <em>interrupted</em>,或直到经过一定数量的实时。<>

(继承自 Object)
Wait(Int64, Int32)

导致当前线程等待,直到它被唤醒,通常是通过 em <通知/em> 或 <em>interrupted</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 引用字段进行原子更新。

适用于