public class VolatileCallSite extends CallSite
VolatileCallSite
是
CallSite
其目标行为一个volatile变量一样。一个链接到一个
VolatileCallSite
invokedynamic
指令看到其调用站点的目标立刻更新,即使更新发生在另一个线程。可能会有这样的线程之间的紧耦合的性能代价。
不像MutableCallSite
,有没有syncAll operation挥发性调用站点,因为每写对一个volatile变量的读线程同步与含蓄。
在其他方面,可以用一VolatileCallSite
MutableCallSite
。
MutableCallSite
Constructor and Description |
---|
VolatileCallSite(MethodHandle target)
创建一个与目标绑定的调用站点。
|
VolatileCallSite(MethodType type)
创建一个与目标绑定的调用站点。
|
Modifier and Type | Method and Description |
---|---|
MethodHandle |
dynamicInvoker()
生产法处理相当于一个invokedynamic指令已与该调用站点。
|
MethodHandle |
getTarget()
返回调用点目标的方法,它的行为就像一个
volatile 领域的
VolatileCallSite 。
|
void |
setTarget(MethodHandle newTarget)
更新此调用站点的目标方法,作为一个易失性变量。
|
public VolatileCallSite(MethodType type)
IllegalStateException
方法处理。
type
,这叫现场会有方法的类型
NullPointerException
-如果该类型是空的
public VolatileCallSite(MethodHandle target)
target
-处理方法,将调用站点的初始目标
NullPointerException
如果提出的目标是零
public final MethodHandle getTarget()
对getTarget
与记忆的相互作用一样,从volatile
场读。
特别是,目前的线程需要发出一个新的目标从内存中读取,必须不失败,看到一个最近的更新到目标由另一个线程。
VolatileCallSite
volatile
领域。
getTarget
方法重写,继承类
CallSite
setTarget(java.lang.invoke.MethodHandle)
public void setTarget(MethodHandle newTarget)
与存储器的相互作用是相同的,作为一个写入到一个动荡的领域。特别是,任何线程保证看到更新的目标的下一次调用getTarget
。
setTarget
方法重写,继承类
CallSite
newTarget
-新目标
NullPointerException
如果提出的新目标是空的
WrongMethodTypeException
如果提出新的目标有一个方法类型,不同于以往的目标
getTarget()
public final MethodHandle dynamicInvoker()
此方法相当于下面的代码:
MethodHandle getTarget, invoker, result; getTarget = MethodHandles.publicLookup().bind(this, "getTarget", MethodType.methodType(MethodHandle.class)); invoker = MethodHandles.exactInvoker(this.type()); result = MethodHandles.foldArguments(invoker, getTarget)
dynamicInvoker
方法重写,继承类
CallSite
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.