|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.infinispan.util.concurrent.locks.StripedLock
@ThreadSafe public class StripedLock
A simple implementation of lock striping, using cache entry keys to lock on, primarily used to help make CacheLoader
implemtations thread safe.
ReentrantReadWriteLock
instances, and using the key hashcodes
to determine buckets.
Since buckets are used, it doesn't matter that the key in question is not removed from the lock map when no longer in
use, since the key is not referenced in this class. Rather, the hash code is used.
Constructor Summary | |
---|---|
StripedLock()
This constructor just calls StripedLock(int) with a default concurrency value of 20. |
|
StripedLock(int concurrency)
Creates a new StripedLock which uses a certain number of shared locks across all elements that need to be locked. |
Method Summary | |
---|---|
void |
acquireAllLocks(List<Object> keys,
boolean exclusive)
Acquires locks on keys passed in. |
void |
acquireLock(Object key,
boolean exclusive)
Blocks until a lock is acquired. |
boolean |
acquireLock(String key,
boolean exclusive,
long millis)
|
boolean |
aquireGlobalLock(boolean exclusive,
long timeout)
Acquires RL on all locks agregated by this StripedLock, in the given timeout. |
int |
getSharedLockCount()
|
int |
getTotalLockCount()
Returns the total number of locks held by this class. |
int |
getTotalReadLockCount()
|
int |
getTotalWriteLockCount()
|
void |
releaseAllLocks(List<Object> keys)
Releases locks on all keys passed in. |
void |
releaseGlobalLock(boolean exclusive)
|
void |
releaseLock(Object key)
Releases a lock the caller may be holding. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public StripedLock()
StripedLock(int)
with a default concurrency value of 20.
public StripedLock(int concurrency)
concurrency
- number of threads expected to use this class concurrently.Method Detail |
---|
public void acquireLock(Object key, boolean exclusive)
exclusive
- if true, a write (exclusive) lock is attempted, otherwise a read (shared) lock is used.public boolean acquireLock(String key, boolean exclusive, long millis)
public void releaseLock(Object key)
public void releaseAllLocks(List<Object> keys)
releaseLock(Object)
. This method is
idempotent.
keys
- keys to unlockpublic void acquireAllLocks(List<Object> keys, boolean exclusive)
acquireLock(Object, boolean)
keys
- keys to unlockexclusive
- whether locks are exclusive.public int getTotalLockCount()
public boolean aquireGlobalLock(boolean exclusive, long timeout)
public void releaseGlobalLock(boolean exclusive)
public int getTotalReadLockCount()
public int getSharedLockCount()
public int getTotalWriteLockCount()
|
Google Analytics | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |