Interface IAtomicReference<E>
- Type Parameters:
E
- the type of object referred to by this reference
- All Superinterfaces:
DistributedObject
public interface IAtomicReference<E> extends DistributedObject
AtomicReference
.
Asynchronous variants have been introduced in version 3.7.
Async methods immediately return a CompletionStage
from which
the operation's result can be obtained either in a blocking manner or by
registering a callback to be executed upon completion. For example:
CompletionStage<E> future = atomicRef.getAsync(); future.whenCompleteAsync((v, throwable) -> { if (throwable == null) { // do something with the old value returned by put operation } else { // handle failure } });
Actions supplied for dependent completions of default non-async methods and async methods
without an explicit Executor
argument are performed
by the ForkJoinPool.commonPool()
(unless it does not
support a parallelism level of at least 2, in which case a new Thread
is
created per task).
IAtomicReference is accessed via CPSubsystem.getAtomicReference(String)
.
It works on top of the Raft consensus algorithm.
It offers linearizability during crash failures and network
partitions. It is CP with respect to the CAP principle. If a network
partition occurs, it remains available on at most one side of the partition.
IAtomicReference impl does not offer exactly-once / effectively-once
execution semantics. It goes with at-least-once execution semantics
by default and can cause an API call to be committed multiple times
in case of CP member failures. It can be tuned to offer at-most-once
execution semantics. Please see
CPSubsystemConfig.setFailOnIndeterminateOperationState(boolean)
- Since:
- 3.2
- See Also:
IAtomicLong
-
Method Summary
Modifier and Type Method Description void
alter(IFunction<E,E> function)
Alters the currently stored reference by applying a function on it.E
alterAndGet(IFunction<E,E> function)
Alters the currently stored reference by applying a function on it and gets the result.CompletionStage<E>
alterAndGetAsync(IFunction<E,E> function)
Alters the currently stored reference by applying a function on it and gets the result.CompletionStage<Void>
alterAsync(IFunction<E,E> function)
Alters the currently stored reference by applying a function on it.<R> R
apply(IFunction<E,R> function)
Applies a function on the value, the actual stored value will not change.<R> CompletionStage<R>
applyAsync(IFunction<E,R> function)
Applies a function on the value, the actual stored value will not change.void
clear()
Clears the current stored reference.CompletionStage<Void>
clearAsync()
Clears the current stored reference.boolean
compareAndSet(E expect, E update)
Atomically sets the value to the given updated value only if the current value==
the expected value.CompletionStage<Boolean>
compareAndSetAsync(E expect, E update)
Atomically sets the value to the given updated value only if the current value==
the expected value.boolean
contains(E value)
Checks if the reference contains the value.CompletionStage<Boolean>
containsAsync(E expected)
Checks if the reference contains the value.E
get()
Gets the current value.E
getAndAlter(IFunction<E,E> function)
Alters the currently stored reference by applying a function on it on and gets the old value.CompletionStage<E>
getAndAlterAsync(IFunction<E,E> function)
Alters the currently stored reference by applying a function on it on and gets the old value.E
getAndSet(E newValue)
Gets the old value and sets the new value.CompletionStage<E>
getAndSetAsync(E newValue)
Gets the value and sets the new value.CompletionStage<E>
getAsync()
Gets the current value.boolean
isNull()
Checks if the stored reference isnull
.CompletionStage<Boolean>
isNullAsync()
Checks if the stored reference isnull
.void
set(E newValue)
Atomically sets the given value.CompletionStage<Void>
setAsync(E newValue)
Atomically sets the given value.Methods inherited from interface com.hazelcast.core.DistributedObject
destroy, getName, getPartitionKey, getServiceName
-
Method Details
-
compareAndSet
Atomically sets the value to the given updated value only if the current value==
the expected value.- Parameters:
expect
- the expected valueupdate
- the new value- Returns:
true
if successful; orfalse
if the actual value was not equal to the expected value
-
get
E get()Gets the current value.- Returns:
- the current value
-
set
Atomically sets the given value.- Parameters:
newValue
- the new value
-
getAndSet
Gets the old value and sets the new value.- Parameters:
newValue
- the new value- Returns:
- the old value
-
isNull
boolean isNull()Checks if the stored reference isnull
.- Returns:
true
ifnull
,false
otherwise
-
clear
void clear()Clears the current stored reference. -
contains
Checks if the reference contains the value.- Parameters:
value
- the value to check (is allowed to benull
)- Returns:
true
if the value is found,false
otherwise
-
alter
Alters the currently stored reference by applying a function on it.- Parameters:
function
- the function that alters the currently stored reference- Throws:
IllegalArgumentException
- if function isnull
-
alterAndGet
Alters the currently stored reference by applying a function on it and gets the result.- Parameters:
function
- the function that alters the currently stored reference- Returns:
- the new value, the result of the applied function
- Throws:
IllegalArgumentException
- if function isnull
-
getAndAlter
Alters the currently stored reference by applying a function on it on and gets the old value.- Parameters:
function
- the function that alters the currently stored reference- Returns:
- the old value, the value before the function is applied
- Throws:
IllegalArgumentException
- if function isnull
-
apply
Applies a function on the value, the actual stored value will not change.- Type Parameters:
R
- the result type of the function- Parameters:
function
- the function applied on the value, the stored value does not change- Returns:
- the result of the function application
- Throws:
IllegalArgumentException
- if function isnull
-
compareAndSetAsync
Atomically sets the value to the given updated value only if the current value==
the expected value.- Parameters:
expect
- the expected valueupdate
- the new value- Returns:
true
if successful; orfalse
if the actual value was not equal to the expected value
-
getAsync
CompletionStage<E> getAsync()Gets the current value.- Returns:
- the current value
-
setAsync
Atomically sets the given value.- Parameters:
newValue
- the new value
-
getAndSetAsync
Gets the value and sets the new value.- Parameters:
newValue
- the new value- Returns:
- the old value
-
isNullAsync
CompletionStage<Boolean> isNullAsync()Checks if the stored reference isnull
.- Returns:
true
ifnull
,false
otherwise
-
clearAsync
CompletionStage<Void> clearAsync()Clears the current stored reference. -
containsAsync
Checks if the reference contains the value.- Parameters:
expected
- the value to check (is allowed to be null)- Returns:
true
if the value is found,false
otherwise
-
alterAsync
Alters the currently stored reference by applying a function on it.- Parameters:
function
- the function- Throws:
IllegalArgumentException
- if function isnull
-
alterAndGetAsync
Alters the currently stored reference by applying a function on it and gets the result.- Parameters:
function
- the function- Returns:
- the new value
- Throws:
IllegalArgumentException
- if function isnull
-
getAndAlterAsync
Alters the currently stored reference by applying a function on it on and gets the old value.- Parameters:
function
- the function- Returns:
- the old value
- Throws:
IllegalArgumentException
- if function isnull
-
applyAsync
Applies a function on the value, the actual stored value will not change.- Type Parameters:
R
- the result type of the function- Parameters:
function
- the function- Returns:
- the result of the function application
- Throws:
IllegalArgumentException
- if function isnull
-