- java.lang.Object
-
- java.lang.invoke.CallSite
-
- java.lang.invoke.VolatileCallSite
-
public class VolatileCallSite extends CallSite
VolatileCallSite
是CallSite
,其目标的作用类似于volatile变量。 链接到VolatileCallSite
的invokedynamic
指令会VolatileCallSite
看到其调用站点目标的更新,即使更新发生在另一个线程中也是如此。 线程之间的这种紧密耦合可能存在性能损失。与
MutableCallSite
不同,在易失性调用站点上没有syncAll operation ,因为对volatile变量的每次写入都与读取器线程隐式同步。在其他方面,
VolatileCallSite
可与MutableCallSite
互换。- 从以下版本开始:
- 1.7
- 另请参见:
-
MutableCallSite
-
-
构造方法摘要
构造方法 构造器 描述 VolatileCallSite(MethodHandle target)
创建一个具有与其目标的volatile绑定的调用站点。VolatileCallSite(MethodType type)
创建一个具有与其目标的volatile绑定的调用站点。
-
方法摘要
所有方法 实例方法 具体的方法 变量和类型 方法 描述 MethodHandle
getTarget()
返回调用点,其行为类似于目标方法volatile
的领域VolatileCallSite
。void
setTarget(MethodHandle newTarget)
将此调用站点的目标方法更新为volatile变量。-
声明方法的类 java.lang.invoke.CallSite
dynamicInvoker, type
-
-
-
-
构造方法详细信息
-
VolatileCallSite
public VolatileCallSite(MethodType type)
创建一个具有与其目标的volatile绑定的调用站点。 初始目标设置为给定类型的方法句柄,如果被调用将抛出IllegalStateException
。- 参数
-
type
- 此调用站点将具有的方法类型 - 异常
-
NullPointerException
- 如果建议的类型为null
-
VolatileCallSite
public VolatileCallSite(MethodHandle target)
创建一个具有与其目标的volatile绑定的调用站点。 目标设置为给定值。- 参数
-
target
- 将成为调用站点的初始目标的方法句柄 - 异常
-
NullPointerException
- 如果建议的目标为空
-
-
方法详细信息
-
getTarget
public final MethodHandle getTarget()
返回调用点,其行为类似于目标方法volatile
的领域VolatileCallSite
。getTarget
与内存的交互与volatile
字段的读取相同。特别是,当前线程需要从内存中发出对目标的新读取,并且必须能够看到另一个线程对目标的最新更新。
- Specified by:
-
getTarget
在类CallSite
- 结果
- 此调用站点的链接状态,一个可以随时间变化的方法句柄
- 另请参见:
-
setTarget(java.lang.invoke.MethodHandle)
-
setTarget
public void setTarget(MethodHandle newTarget)
将此调用站点的目标方法更新为volatile变量。 新目标的类型必须与旧目标的类型一致。与内存的交互与对volatile字段的写入相同。 特别是,任何线程都保证在下次调用
getTarget
时看到更新的目标。- Specified by:
-
setTarget
类CallSite
- 参数
-
newTarget
- 新目标 - 异常
-
NullPointerException
- 如果建议的新目标为空 -
WrongMethodTypeException
- 如果建议的新目标的方法类型与先前的目标不同 - 另请参见:
-
getTarget()
-
-