java.lang.Object
org.apache.derby.impl.services.locks.Lock
All Implemented Interfaces:
Latch, Control
Direct Known Subclasses:
ActiveLock

class Lock extends Object implements Latch, Control
A Lock represents a granted or waiting lock request.
MT - Mutable - Immutable identity : Thread Aware
  • Field Details

    • space

      private final CompatibilitySpace space
      Compatibility space the object is locked in. MT - immutable - reference only
    • ref

      private final Lockable ref
      Object being locked. MT - immutable - reference only
    • qualifier

      private final Object qualifier
      Qualifier used in the lock request.. MT - immutable - reference only
    • count

      int count
  • Constructor Details

  • Method Details

    • getLockable

      public final Lockable getLockable()
      Return the object this lock is held on MT - Thread safe
      Specified by:
      getLockable in interface Control
      Specified by:
      getLockable in interface Latch
    • getCompatabilitySpace

      public final CompatibilitySpace getCompatabilitySpace()
      Return the compatibility space this lock is held in. MT - Thread safe
      Specified by:
      getCompatabilitySpace in interface Latch
    • getQualifier

      public final Object getQualifier()
      Return the qualifier lock was obtained with. MT - Thread safe
      Specified by:
      getQualifier in interface Latch
    • getCount

      public final int getCount()
      Return the count of locks. MT - Thread safe
      Specified by:
      getCount in interface Latch
    • copy

      final Lock copy()
    • grant

      void grant()
    • unlock

      int unlock(int unlockCount)
    • hashCode

      public final int hashCode()
      Overrides:
      hashCode in class Object
    • equals

      public final boolean equals(Object other)
      Overrides:
      equals in class Object
    • getLockControl

      public LockControl getLockControl()
      Specified by:
      getLockControl in interface Control
    • getLock

      public Lock getLock(CompatibilitySpace compatibilitySpace, Object qualifier)
      Specified by:
      getLock in interface Control
    • shallowClone

      public Control shallowClone()
      We can return ourselves here because our identity is immutable and what we returned will not be accessed as a Lock, so the count cannot be changed.
      Specified by:
      shallowClone in interface Control
    • firstWaiter

      public ActiveLock firstWaiter()
      Specified by:
      firstWaiter in interface Control
    • isEmpty

      public boolean isEmpty()
      Specified by:
      isEmpty in interface Control
    • unlock

      public boolean unlock(Latch lockInGroup, int unlockCount)
      Specified by:
      unlock in interface Control
    • addWaiters

      public void addWaiters(Map waiters)
      Specified by:
      addWaiters in interface Control
    • getFirstGrant

      public Lock getFirstGrant()
      Specified by:
      getFirstGrant in interface Control
    • getGranted

      public List getGranted()
      Specified by:
      getGranted in interface Control
    • getWaiting

      public List getWaiting()
      Specified by:
      getWaiting in interface Control
    • isGrantable

      public boolean isGrantable(boolean noWaitersBeforeMe, CompatibilitySpace compatibilitySpace, Object requestQualifier)
      Specified by:
      isGrantable in interface Control