public interface IAtomicLong extends DistributedObject
AtomicLong.
 
 Asynchronous variants of all methods have been introduced in version 3.7.
 Async methods immediately return an ICompletableFuture 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:
 
 ICompletableFuture future = atomicLong.addAndGetAsync(13);
 future.andThen(new ExecutionCallback<Long>() {
     void onResponse(Long response) {
         // do something with the result
     }
     void onFailure(Throwable t) {
         // handle failure
     }
 });
  
 
 As of version 3.12, Hazelcast offers 2 different IAtomicLong impls.
 Behaviour of IAtomicLong under failure scenarios, including network
 partitions, depends on the impl. The first impl is the good old
 IAtomicLong that is accessed via
 HazelcastInstance.getAtomicLong(String). It works on top of
 Hazelcast's async replication algorithm and does not guarantee
 linearizability during failures. It is possible for an IAtomicLong
 instance to exist in each of the partitioned clusters or to not exist
 at all. Under these circumstances, the values held in the
 IAtomicLong instance may diverge. Once the network partition heals,
 Hazelcast will use the configured split-brain merge policy to resolve
 conflicting values.
 
 This IAtomicLong impl also supports Quorum QuorumConfig
 in cluster versions 3.10 and higher. However, Hazelcast quorums do not
 guarantee strong consistency under failure scenarios.
 
 The second impl is a new one introduced with the CPSubsystem in
 version 3.12. It is accessed via CPSubsystem.getAtomicLong(String).
 It has a major difference to the old implementation, that is, 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.
 
 The CP IAtomicLong 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)
IAtomicReference| Modifier and Type | Method and Description | 
|---|---|
long | 
addAndGet(long delta)
Atomically adds the given value to the current value. 
 | 
ICompletableFuture<Long> | 
addAndGetAsync(long delta)
Atomically adds the given value to the current value. 
 | 
void | 
alter(IFunction<Long,Long> function)
Alters the currently stored value by applying a function on it. 
 | 
long | 
alterAndGet(IFunction<Long,Long> function)
Alters the currently stored value by applying a function on it and
 gets the result. 
 | 
ICompletableFuture<Long> | 
alterAndGetAsync(IFunction<Long,Long> function)
Alters the currently stored value by applying a function on it and gets
 the result. 
 | 
ICompletableFuture<Void> | 
alterAsync(IFunction<Long,Long> function)
Alters the currently stored value by applying a function on it. 
 | 
<R> R | 
apply(IFunction<Long,R> function)
Applies a function on the value, the actual stored value will not change. 
 | 
<R> ICompletableFuture<R> | 
applyAsync(IFunction<Long,R> function)
Applies a function on the value, the actual stored value will not
 change. 
 | 
boolean | 
compareAndSet(long expect,
             long update)
Atomically sets the value to the given updated value
 only if the current value  
== the expected value. | 
ICompletableFuture<Boolean> | 
compareAndSetAsync(long expect,
                  long update)
Atomically sets the value to the given updated value
 only if the current value  
== the expected value. | 
long | 
decrementAndGet()
Atomically decrements the current value by one. 
 | 
ICompletableFuture<Long> | 
decrementAndGetAsync()
Atomically decrements the current value by one. 
 | 
long | 
get()
Gets the current value. 
 | 
long | 
getAndAdd(long delta)
Atomically adds the given value to the current value. 
 | 
ICompletableFuture<Long> | 
getAndAddAsync(long delta)
Atomically adds the given value to the current value. 
 | 
long | 
getAndAlter(IFunction<Long,Long> function)
Alters the currently stored value by applying a function on it on and
 gets the old value. 
 | 
ICompletableFuture<Long> | 
getAndAlterAsync(IFunction<Long,Long> function)
Alters the currently stored value by applying a function on it on and
 gets the old value. 
 | 
long | 
getAndIncrement()
Atomically increments the current value by one. 
 | 
ICompletableFuture<Long> | 
getAndIncrementAsync()
Atomically increments the current value by one. 
 | 
long | 
getAndSet(long newValue)
Atomically sets the given value and returns the old value. 
 | 
ICompletableFuture<Long> | 
getAndSetAsync(long newValue)
Atomically sets the given value and returns the old value. 
 | 
ICompletableFuture<Long> | 
getAsync()
Gets the current value. 
 | 
String | 
getName()
Returns the name of this IAtomicLong instance. 
 | 
long | 
incrementAndGet()
Atomically increments the current value by one. 
 | 
ICompletableFuture<Long> | 
incrementAndGetAsync()
Atomically increments the current value by one. 
 | 
void | 
set(long newValue)
Atomically sets the given value. 
 | 
ICompletableFuture<Void> | 
setAsync(long newValue)
Atomically sets the given value. 
 | 
destroy, getPartitionKey, getServiceNameString getName()
getName in interface DistributedObjectlong addAndGet(long delta)
delta - the value to add to the current valueboolean compareAndSet(long expect,
                      long update)
== the expected value.expect - the expected valueupdate - the new valuetrue if successful; or false if the actual value
 was not equal to the expected value.long decrementAndGet()
long get()
long getAndAdd(long delta)
delta - the value to add to the current valuelong getAndSet(long newValue)
newValue - the new valuelong incrementAndGet()
long getAndIncrement()
void set(long newValue)
newValue - the new valuevoid alter(IFunction<Long,Long> function)
function - the function applied to the currently stored valueIllegalArgumentException - if function is nulllong alterAndGet(IFunction<Long,Long> function)
function - the function applied to the currently stored valueIllegalArgumentException - if function is nulllong getAndAlter(IFunction<Long,Long> function)
function - the function applied to the currently stored valueIllegalArgumentException - if function is null<R> R apply(IFunction<Long,R> function)
function - the function applied to the value, the value is not changedIllegalArgumentException - if function is nullICompletableFuture<Long> addAndGetAsync(long delta)
 This method will dispatch a request and return immediately an
 ICompletableFuture.
 
The operations result can be obtained in a blocking way, or a callback can be provided for execution upon completion, as demonstrated in the following examples:
 ICompletableFuture future = atomicLong.addAndGetAsync(13);
 // do something else, then read the result
 // this method will block until the result is available
 Long result = future.get();
  
 
 ICompletableFuture future = atomicLong.addAndGetAsync(13);
 future.andThen(new ExecutionCallback<Long>() {
     void onResponse(Long response) {
         // do something with the result
     }
     void onFailure(Throwable t) {
         // handle failure
     }
 });
  delta - the value to addICompletableFuture bearing the responseICompletableFuture<Boolean> compareAndSetAsync(long expect, long update)
== the expected value.
 
 This method will dispatch a request and return immediately an
 ICompletableFuture.
expect - the expected valueupdate - the new valueICompletableFuture with value true if successful;
 or false if the actual value was not equal to the expected valueICompletableFuture<Long> decrementAndGetAsync()
 This method will dispatch a request and return immediately an
 ICompletableFuture.
ICompletableFuture with the updated valueICompletableFuture<Long> getAsync()
ICompletableFuture.ICompletableFuture with the current valueICompletableFuture<Long> getAndAddAsync(long delta)
 This method will dispatch a request and return immediately an
 ICompletableFuture.
delta - the value to addICompletableFuture with the old value before the additionICompletableFuture<Long> getAndSetAsync(long newValue)
 This method will dispatch a request and return immediately an
 ICompletableFuture.
newValue - the new valueICompletableFuture with the old valueICompletableFuture<Long> incrementAndGetAsync()
 This method will dispatch a request and return immediately an
 ICompletableFuture.
ICompletableFuture with the updated valueICompletableFuture<Long> getAndIncrementAsync()
 This method will dispatch a request and return immediately an
 ICompletableFuture.
ICompletableFuture with the old valueICompletableFuture<Void> setAsync(long newValue)
 This method will dispatch a request and return immediately an
 ICompletableFuture.
newValue - the new valueICompletableFutureICompletableFuture<Void> alterAsync(IFunction<Long,Long> function)
 This method will dispatch a request and return immediately an
 ICompletableFuture.
function - the functionICompletableFuture with the new valueIllegalArgumentException - if function is nullICompletableFuture<Long> alterAndGetAsync(IFunction<Long,Long> function)
 This method will dispatch a request and return immediately an
 ICompletableFuture.
function - the functionICompletableFuture with the new valueIllegalArgumentException - if function is nullICompletableFuture<Long> getAndAlterAsync(IFunction<Long,Long> function)
 This method will dispatch a request and return immediately an
 ICompletableFuture.
function - the functionICompletableFuture with the old valueIllegalArgumentException - if function is null<R> ICompletableFuture<R> applyAsync(IFunction<Long,R> function)
 This method will dispatch a request and return immediately an
 ICompletableFuture. For example:
 
 class IsOneFunction implements IFunction {
     @Override
     public Boolean apply(Long input) {
         return input.equals(1L);
     }
 }
 ICompletableFuture future = atomicLong.applyAsync(new IsOneFunction());
 future.andThen(new ExecutionCallback<;Boolean>() {
    void onResponse(Boolean response) {
        // do something with the response
    }
    void onFailure(Throwable t) {
       // handle failure
    }
 });
   function - the functionICompletableFuture with the result of the function applicationIllegalArgumentException - if function is nullCopyright © 2022 Hazelcast, Inc.. All Rights Reserved.