Class UpdatableIterator<E>

java.lang.Object
org.apache.activemq.artemis.utils.collections.UpdatableIterator<E>
All Implemented Interfaces:
Iterator<E>, RepeatableIterator<E>, ResettableIterator<E>

public class UpdatableIterator<E> extends Object implements ResettableIterator<E>, RepeatableIterator<E>
  • Constructor Details

  • Method Details

    • update

      public void update(ResettableIterator<E> iterator)
      This can be called by another thread. It sets a new iterator, that will be picked up on the next reset.
      Parameters:
      iterator - the new iterator to update to.
    • reset

      public void reset()
      When reset is called, then if a new iterator has been provided by another thread via update method, then we switch over to using the new iterator.

      It is important that on nulling off the changedIterator, we atomically compare and set as the changedIterator could be further updated by another thread whilst we are resetting, the subsequent update simply would be picked up on the next reset.

      Specified by:
      reset in interface ResettableIterator<E>
    • hasNext

      public boolean hasNext()
      Specified by:
      hasNext in interface Iterator<E>
    • next

      public E next()
      Specified by:
      next in interface Iterator<E>
    • remove

      public void remove()
      Specified by:
      remove in interface Iterator<E>
    • forEachRemaining

      public void forEachRemaining(Consumer<? super E> action)
      Specified by:
      forEachRemaining in interface Iterator<E>
    • repeat

      public void repeat()
      Description copied from interface: RepeatableIterator
      If the current value should repeat.
      Specified by:
      repeat in interface RepeatableIterator<E>
    • removed

      public void removed(E removed)
      Specified by:
      removed in interface RepeatableIterator<E>