Class ConcurrentReferenceHashMap.Segment

  • All Implemented Interfaces:
    java.io.Serializable, java.util.concurrent.locks.Lock
    Enclosing class:
    ConcurrentReferenceHashMap<K,​V>

    protected final class ConcurrentReferenceHashMap.Segment
    extends java.util.concurrent.locks.ReentrantLock
    A single segment used to divide the map to allow better concurrent performance.
    See Also:
    Serialized Form
    • Constructor Summary

      Constructors 
      Constructor Description
      Segment​(int initialSize, int resizeThreshold)  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void clear()
      Clear all items from this segment.
      <T> T doTask​(int hash, java.lang.Object key, com.aspectran.core.util.ConcurrentReferenceHashMap.Task<T> task)
      Apply an update operation to this segment.
      int getCount()
      Return the total number of references in this segment.
      ConcurrentReferenceHashMap.Reference<K,​V> getReference​(java.lang.Object key, int hash, ConcurrentReferenceHashMap.Restructure restructure)  
      int getSize()
      Return the size of the current references array.
      protected void restructureIfNecessary​(boolean allowResize)
      Restructure the underlying data structure when it becomes necessary.
      • Methods inherited from class java.util.concurrent.locks.ReentrantLock

        getHoldCount, getOwner, getQueuedThreads, getQueueLength, getWaitingThreads, getWaitQueueLength, hasQueuedThread, hasQueuedThreads, hasWaiters, isFair, isHeldByCurrentThread, isLocked, lock, lockInterruptibly, newCondition, toString, tryLock, tryLock, unlock
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Constructor Detail

      • Segment

        public Segment​(int initialSize,
                       int resizeThreshold)
    • Method Detail

      • doTask

        @Nullable
        public <T> T doTask​(int hash,
                            @Nullable
                            java.lang.Object key,
                            com.aspectran.core.util.ConcurrentReferenceHashMap.Task<T> task)
        Apply an update operation to this segment. The segment will be locked during the update.
        Parameters:
        hash - the hash of the key
        key - the key
        task - the update operation
        Returns:
        the result of the operation
      • clear

        public void clear()
        Clear all items from this segment.
      • restructureIfNecessary

        protected final void restructureIfNecessary​(boolean allowResize)
        Restructure the underlying data structure when it becomes necessary. This method can increase the size of the references table as well as purge any references that have been garbage collected.
        Parameters:
        allowResize - if resizing is permitted
      • getSize

        public final int getSize()
        Return the size of the current references array.
      • getCount

        public final int getCount()
        Return the total number of references in this segment.