# Print output for @column tags ?>
Developers

- Design
- Develop
- Distribute

Developer Console

## Most visited

## Recently visited

## Results for

Summary: Ctors | Methods | Inherited Methods

# VolatileCallSite

`public class VolatileCallSite`
`` `extends CallSite` ``

java.lang.Object
↳ | java.lang.invoke.CallSite
| ↳ | java.lang.invoke.VolatileCallSite

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.

In other respects, a `VolatileCallSite` is interchangeable with `MutableCallSite`.

See also:

- `MutableCallSite`

## Summary

### Public constructors
`VolatileCallSite(MethodType type)` Creates a call site with a volatile binding to its target.
`VolatileCallSite(MethodHandle target)` Creates a call site with a volatile binding to its target.

### Public methods
`final MethodHandle` | `dynamicInvoker()` Produces a method handle equivalent to an invokedynamic instruction which has been linked to this call site.
`final MethodHandle` | `getTarget()` Returns the target method of the call site, which behaves like a `volatile` field of the `VolatileCallSite`.
`void` | `setTarget(MethodHandle newTarget)` Updates the target method of this call site, as a volatile variable.

### Inherited methods
From class `java.lang.invoke.CallSite`
`abstract MethodHandle` | `dynamicInvoker()` Produces a method handle equivalent to an invokedynamic instruction which has been linked to this call site.
`abstract MethodHandle` | `getTarget()` Returns the target method of the call site, according to the behavior defined by this call site's specific class.
`abstract void` | `setTarget(MethodHandle newTarget)` Updates the target method of this call site, according to the behavior defined by this call site's specific class.
`MethodType` | `type()` Returns the type of this call site's target.
From class `java.lang.Object`
`Object` | `clone()` Creates and returns a copy of this object.
`boolean` | `equals(Object obj)` Indicates whether some other object is "equal to" this one.
`void` | `finalize()` Called by the garbage collector on an object when garbage collection determines that there are no more references to the object.
`final Class<?>` | `getClass()` Returns the runtime class of this `Object`.
`int` | `hashCode()` Returns a hash code value for the object.
`final void` | `notify()` Wakes up a single thread that is waiting on this object's monitor.
`final void` | `notifyAll()` Wakes up all threads that are waiting on this object's monitor.
`String` | `toString()` Returns a string representation of the object.
`final void` | `wait(long timeout, int nanos)` Causes the current thread to wait until another thread invokes the `notify()` method or the `notifyAll()` method for this object, or some other thread interrupts the current thread, or a certain amount of real time has elapsed.
`final void` | `wait(long timeout)` Causes the current thread to wait until either another thread invokes the `notify()` method or the `notifyAll()` method for this object, or a specified amount of time has elapsed.
`final void` | `wait()` Causes the current thread to wait until another thread invokes the `notify()` method or the `notifyAll()` method for this object.

## Public constructors

### VolatileCallSite

    public VolatileCallSite (MethodType type)

Creates 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 an `IllegalStateException` if called.

Parameters
`type` | `MethodType`: the method type that this call site will have

Throws
`NullPointerException` | if the proposed type is null

### VolatileCallSite

    public VolatileCallSite (MethodHandle target)

Creates a call site with a volatile binding to its target. The target is set to the given value.

Parameters
`target` | `MethodHandle`: the method handle that will be the initial target of the call site

Throws
`NullPointerException` | if the proposed target is null

## Public methods

### dynamicInvoker

    public final MethodHandle dynamicInvoker ()

Produces a method handle equivalent to an invokedynamic instruction which has been linked to this call site.

This method is equivalent to the following code:

>     MethodHandle getTarget, invoker, result;
>      getTarget = MethodHandles.publicLookup().bind(this, "getTarget", MethodType.methodType(MethodHandle.class));
>      invoker = MethodHandles.exactInvoker(this.type());
>      result = MethodHandles.foldArguments(invoker, getTarget)

Returns
`MethodHandle` | a method handle which always invokes this call site's current target

### getTarget

    public final MethodHandle getTarget ()

Returns the target method of the call site, which behaves like a `volatile` field of the `VolatileCallSite`.

The interactions of `getTarget` with memory are the same as of a read from a `volatile` field.

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.

Returns
`MethodHandle` | the linkage state of this call site, a method handle which can change over time

See also:

- `setTarget(MethodHandle)`

### setTarget

    public void setTarget (MethodHandle newTarget)

Updates 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`.

Parameters
`newTarget` | `MethodHandle`: 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()`

Full name *
Email address *
Company / developer name
One of your Play Store app URLs *
Which best describes your business:*
Apps
Games
Apps & Games
*
*