Class SpinLock

  • All Implemented Interfaces:
    Lock, ExtendedLock

    public class SpinLock
    extends Object
    implements ExtendedLock
    A spin lock. Such locks are designed to only be held for a very short time - for example, long enough to compare and swap two fields. The lock may degrade to yielding the thread after a certain number of spins if it is held for too long.

    Spin locks do not support conditions, and they do not support timed waiting. Normally only the uninterruptible lock, tryLock, and unlock methods should be used to control the lock.

    • Constructor Detail

      • SpinLock

        public SpinLock()
        Construct a new instance.
    • Method Detail

      • isLocked

        public boolean isLocked()
        Determine if this spin lock is held. Useful for assertions.
        Specified by:
        isLocked in interface ExtendedLock
        Returns:
        true if the lock is held by any thread, false otherwise
      • isHeldByCurrentThread

        public boolean isHeldByCurrentThread()
        Determine if this spin lock is held by the calling thread. Useful for assertions.
        Specified by:
        isHeldByCurrentThread in interface ExtendedLock
        Returns:
        true if the lock is held by the calling thread, false otherwise
      • isFair

        public boolean isFair()
        Determine if this lock is fair.
        Specified by:
        isFair in interface ExtendedLock
        Returns:
        true; the lock is fair
      • lock

        public void lock()
        Acquire the lock by spinning until it is held.
        Specified by:
        lock in interface Lock
      • tryLock

        public boolean tryLock()
        Try to acquire the lock, returning immediately whether or not the lock was acquired.
        Specified by:
        tryLock in interface Lock
        Returns:
        true if the lock was acquired, false otherwise