Package org.wildfly.common.lock
Class SpinLock
java.lang.Object
org.wildfly.common.lock.SpinLock
- All Implemented Interfaces:
Lock,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 Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbooleanisFair()Determine if this lock is fair.booleanDetermine if this spin lock is held by the calling thread.booleanisLocked()Determine if this spin lock is held.voidlock()Acquire the lock by spinning until it is held.voidAcquire the lock by spinning until it is held or the thread is interrupted.Unsupported.booleantryLock()Try to acquire the lock, returning immediately whether or not the lock was acquired.booleanUnsupported.voidunlock()Release the lock.
-
Constructor Details
-
SpinLock
public SpinLock()Construct a new instance. -
SpinLock
public SpinLock(int spinLimit) Construct a new instance with the given spin limit.- Parameters:
spinLimit- the spin limit to use for this instance
-
-
Method Details
-
isLocked
public boolean isLocked()Determine if this spin lock is held. Useful for assertions.- Specified by:
isLockedin interfaceExtendedLock- Returns:
trueif the lock is held by any thread,falseotherwise
-
isHeldByCurrentThread
public boolean isHeldByCurrentThread()Determine if this spin lock is held by the calling thread. Useful for assertions.- Specified by:
isHeldByCurrentThreadin interfaceExtendedLock- Returns:
trueif the lock is held by the calling thread,falseotherwise
-
isFair
public boolean isFair()Determine if this lock is fair.- Specified by:
isFairin interfaceExtendedLock- Returns:
true; the lock is fair
-
lock
public void lock()Acquire the lock by spinning until it is held. -
lockInterruptibly
Acquire the lock by spinning until it is held or the thread is interrupted.- Specified by:
lockInterruptiblyin interfaceLock- Throws:
InterruptedException- if the thread is interrupted before the lock can be acquired
-
tryLock
public boolean tryLock()Try to acquire the lock, returning immediately whether or not the lock was acquired. -
unlock
public void unlock()Release the lock.- Specified by:
unlockin interfaceLock- Throws:
IllegalMonitorStateException- if the lock is not held by the current thread
-
tryLock
Unsupported.- Specified by:
tryLockin interfaceLock- Parameters:
time- ignoredunit- ignored- Returns:
- nothing
- Throws:
UnsupportedOperationException- always
-
newCondition
Unsupported.- Specified by:
newConditionin interfaceLock- Returns:
- nothing
- Throws:
UnsupportedOperationException- always
-