Class ReentrantLock.WriteLock

  • Enclosing class:
    ReentrantLock<T>

    protected class ReentrantLock.WriteLock
    extends ReentrantLock.Lock
    Represents a write lock which allows an object to hold the lock multiple times. an object requesting a write lock blocks objects that request a read lock.
    • Constructor Detail

      • WriteLock

        protected WriteLock​(LockCountManager<? super T> lockCountManager)
        Creates a new write lock using the designated LockCountManager for comparing objects.
        Parameters:
        lockCountManager - The manager counting locks for objects.
    • Method Detail

      • lock

        public void lock​(T object,
                         long origTimeout)
                  throws InterruptedException,
                         TimeoutException
        Provides the designated object with a write lock. The current thread will be blocked until the lock can be acquired or the timeout elapsed. Writers have priority, that is the currently active readers may proceed but successive readers will be blocked until no writer is active or waiting.

        Since the lock is reentrant, an object may acquire a lock multiple times. But it also has to release the lock per acquisition afterwards.

        Overrides:
        lock in class ReentrantLock.Lock
        Parameters:
        object - The object that requests a write lock.
        origTimeout - The time to wait for the lock. A timeout <= 0 means to wait forever (or until the lock is granted).
        Throws:
        InterruptedException - If the thread is interrupted while waiting for the lock, an InterruptedException will be thrown.
        TimeoutException - If the designated timeout elapsed before the lock can be acquired, a TimeoutException will be thrown.
      • notificationRequired

        protected boolean notificationRequired()
        Gets whether a notification of waiting threads is required. This depends on whether there are no more locks and whether there are threads waiting for the lock. This also respects readers that wait to lock.
        Overrides:
        notificationRequired in class ReentrantLock.Lock
        Returns:
        Whether a notification of waiting threads is required (no more locks and there are waiters for the lock).