java.lang.Object
java.lang.invoke.CallSite
java.lang.invoke.VolatileCallSite
public class VolatileCallSite extends CallSite
A 
VolatileCallSite is a CallSite whose target acts like a volatile variable.
 An invokedynamic instruction linked to a VolatileCallSite sees updates
 to its call site target immediately, even if the update occurs in another thread.
 There may be a performance penalty for such tight coupling between threads.
 
 Unlike MutableCallSite, there is no
 syncAll operation on volatile
 call sites, since every write to a volatile variable is implicitly
 synchronized with reader threads.
 
 In other respects, a VolatileCallSite is interchangeable
 with MutableCallSite.
- Since:
- 1.7
- See Also:
- MutableCallSite
- 
Constructor SummaryConstructors Constructor Description VolatileCallSite(MethodHandle target)Creates a call site with a volatile binding to its target.VolatileCallSite(MethodType type)Creates a call site with a volatile binding to its target.
- 
Method SummaryModifier and Type Method Description MethodHandlegetTarget()Returns the target method of the call site, which behaves like avolatilefield of theVolatileCallSite.voidsetTarget(MethodHandle newTarget)Updates the target method of this call site, as a volatile variable.
- 
Constructor Details- 
VolatileCallSiteCreates a call site with a volatile binding to its target. The initial target is set to a method handle of the given type which will throw anIllegalStateExceptionif called.- Parameters:
- type- the method type that this call site will have
- Throws:
- NullPointerException- if the proposed type is null
 
- 
VolatileCallSiteCreates a call site with a volatile binding to its target. The target is set to the given value.- Parameters:
- target- the method handle that will be the initial target of the call site
- Throws:
- NullPointerException- if the proposed target is null
 
 
- 
- 
Method Details- 
getTargetReturns the target method of the call site, which behaves like avolatilefield of theVolatileCallSite.The interactions of getTargetwith memory are the same as of a read from avolatilefield.In particular, the current thread is required to issue a fresh read of the target from memory, and must not fail to see a recent update to the target by another thread. - Specified by:
- getTargetin class- CallSite
- Returns:
- the linkage state of this call site, a method handle which can change over time
- See Also:
- setTarget(java.lang.invoke.MethodHandle)
 
- 
setTargetUpdates the target method of this call site, as a volatile variable. The type of the new target must agree with the type of the old target.The interactions with memory are the same as of a write to a volatile field. In particular, any threads is guaranteed to see the updated target the next time it calls getTarget.- Specified by:
- setTargetin class- CallSite
- Parameters:
- newTarget- the new target
- Throws:
- NullPointerException- if the proposed new target is null
- WrongMethodTypeException- if the proposed new target has a method type that differs from the previous target
- See Also:
- getTarget()
 
 
-