Class ConcurrentLongHashSet

java.lang.Object
org.apache.bookkeeper.util.collections.ConcurrentLongHashSet

public class ConcurrentLongHashSet extends Object
Concurrent hash set for primitive longs.

Provides similar methods as a ConcurrentSet<Long> but since it's an open hash map with linear probing, no node allocations are required to store the values.

Items MUST be >= 0.
WARN: method forEach do not guarantee thread safety, nor does the items method.
The forEach method is specifically designed for single-threaded usage. When iterating over a set with concurrent writes, it becomes possible for new values to be either observed or not observed. There is no guarantee that if we write value1 and value2, and are able to see value2, then we will also see value1.
It is crucial to understand that the results obtained from aggregate status methods such as items are typically reliable only when the map is not undergoing concurrent updates from other threads. When concurrent updates are involved, the results of these methods reflect transient states that may be suitable for monitoring or estimation purposes, but not for program control.

  • Constructor Details

    • ConcurrentLongHashSet

      @Deprecated public ConcurrentLongHashSet()
      Deprecated.
    • ConcurrentLongHashSet

      @Deprecated public ConcurrentLongHashSet(int expectedItems)
      Deprecated.
    • ConcurrentLongHashSet

      @Deprecated public ConcurrentLongHashSet(int expectedItems, int concurrencyLevel)
      Deprecated.
    • ConcurrentLongHashSet

      public ConcurrentLongHashSet(int expectedItems, int concurrencyLevel, float mapFillFactor, float mapIdleFactor, boolean autoShrink, float expandFactor, float shrinkFactor)
  • Method Details

    • newBuilder

      public static ConcurrentLongHashSet.Builder newBuilder()
    • size

      public long size()
    • sizeInBytes

      public long sizeInBytes()
    • capacity

      public long capacity()
    • isEmpty

      public boolean isEmpty()
    • getUsedBucketCount

      long getUsedBucketCount()
    • contains

      public boolean contains(long item)
    • add

      public boolean add(long item)
    • remove

      public boolean remove(long item)
      Remove an existing entry if found.
      Parameters:
      item -
      Returns:
      true if removed or false if item was not present
    • clear

      public void clear()
    • forEach

      public void forEach(ConcurrentLongHashSet.ConsumerLong processor)
    • items

      public Set<Long> items()
      Returns:
      a new list of all keys (makes a copy)
    • hash

      static final long hash(long key)
    • signSafeMod

      static final int signSafeMod(long n, int max)