Class WeakConcurrentSet<V>

java.lang.Object
com.pnfsoftware.jeb.util.concurrent.WeakConcurrentSet<V>
Type Parameters:
V - value type
All Implemented Interfaces:
Iterable<V>, Runnable

public class WeakConcurrentSet<V> extends Object implements Runnable, Iterable<V>
A thread-safe set with weak values. Entries are based on a key's system hash code and keys are considered equal only by reference equality.

This class does not implement the Set interface because this implementation is incompatible with the set contract. While iterating over a set's entries, any value that has not passed iteration is referenced non-weakly.

  • Constructor Details

    • WeakConcurrentSet

      public WeakConcurrentSet(WeakConcurrentSet.Cleaner cleaner)
      Create a weak-value concurrent set.
      Parameters:
      cleaner - cleanup strategy for stale entries
  • Method Details

    • add

      public boolean add(V value)
      Parameters:
      value - The value to add to the set.
      Returns:
      true if the value was added to the set and was not contained before.
    • contains

      public boolean contains(V value)
      Parameters:
      value - The value to check if it is contained in the set.
      Returns:
      true if the set contains the value.
    • remove

      public boolean remove(V value)
      Parameters:
      value - The value to remove from the set.
      Returns:
      true if the value is contained in the set.
    • clear

      public void clear()
      Clears the set.
    • approximateSize

      public int approximateSize()
      Returns the approximate size of this set where the returned number is at least as big as the actual number of entries.
      Returns:
      the approximate size of this set
    • run

      public void run()
      Run the underlying cleaner loop until interrupted.
      Specified by:
      run in interface Runnable
    • expungeStaleEntries

      public void expungeStaleEntries()
      Cleans all unused references.
    • getCleanerThread

      public Thread getCleanerThread()
      Returns:
      The cleaner thread or null if no such thread was set.
    • iterator

      public Iterator<V> iterator()
      Iterate over live values.
      Specified by:
      iterator in interface Iterable<V>
      Returns:
      an iterator over values that have not been collected