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.