Interface StrongCounter


  • public interface StrongCounter
    The strong consistent counter interface.

    It provides atomic updates for the counter. All the operations are perform asynchronously and they complete the CompletableFuture when completed.

    Since:
    9.0
    Author:
    Pedro Ruivo
    • Method Detail

      • getName

        String getName()
        Returns:
        The counter name.
      • getValue

        CompletableFuture<Long> getValue()
        It fetches the current value.

        It may go remotely to fetch the current value.

        Returns:
        The current value.
      • incrementAndGet

        default CompletableFuture<Long> incrementAndGet()
        Atomically increments the counter and returns the new value.
        Returns:
        The new value.
      • decrementAndGet

        default CompletableFuture<Long> decrementAndGet()
        Atomically decrements the counter and returns the new value
        Returns:
        The new value.
      • addAndGet

        CompletableFuture<Long> addAndGet​(long delta)
        Atomically adds the given value and return the new value.
        Parameters:
        delta - The non-zero value to add. It can be negative.
        Returns:
        The new value.
      • compareAndSet

        default CompletableFuture<Boolean> compareAndSet​(long expect,
                                                         long update)
        Atomically sets the value to the given updated value if the current value == the expected value. It is the same as return compareAndSwap(expect, update).thenApply(value -> value == expect);
        Parameters:
        expect - the expected value
        update - the new value
        Returns:
        true if successful, false otherwise.
      • compareAndSwap

        CompletableFuture<Long> compareAndSwap​(long expect,
                                               long update)
        Atomically sets the value to the given updated value if the current value == the expected value. The operation is successful if the return value is equals to the expected value.
        Parameters:
        expect - the expected value.
        update - the new value.
        Returns:
        the previous counter's value.