public class DLock
extends java.util.concurrent.locks.ReentrantLock
| Modifier and Type | Method and Description |
|---|---|
static java.util.Set<java.util.List<DLock>> |
detectCycle()
goes through the lock ordering map and looks for any cycles returns a set
of cycles
|
protected static java.util.Set<java.util.List<DLock>> |
detectCycleHelper(DLock node,
java.util.List<DLock> history,
java.util.HashSet<DLock> cycleNodes) |
protected static java.util.Set<DLock> |
getChildNodes() |
java.lang.String |
getLockName() |
protected static java.util.Set<DLock> |
getTopNodes(java.util.Set<DLock> childNodes) |
protected static boolean |
isSubset(java.util.List<DLock> subset,
java.util.List<DLock> superset) |
protected static boolean |
isSubset(java.util.List<DLock> set,
java.util.Set<java.util.List<DLock>> allSets) |
void |
lock() |
void |
lock(boolean acquireLock) |
void |
lockInterruptibly() |
static void |
main(java.lang.String[] args) |
static java.lang.String |
makeStackDumpString(java.lang.StackTraceElement[] stackArray)
turn the stacktrace dump into a string
|
java.util.concurrent.locks.Condition |
newCondition() |
protected static void |
printCycle(java.util.List<DLock> cycle) |
void |
setName(java.lang.String name) |
protected static void |
stackDump(java.util.List<DLock> nodes)
given the sequence of nodes which led to a cycle, this method will print
out the stack dumps for each lock sequence assumes we have synchronized
the DLock.class object
|
java.lang.String |
toString() |
boolean |
tryLock() |
boolean |
tryLock(long time,
java.util.concurrent.TimeUnit unit) |
void |
unlock() |
public java.lang.String toString()
toString in class java.util.concurrent.locks.ReentrantLockpublic void setName(java.lang.String name)
public java.lang.String getLockName()
public boolean tryLock()
tryLock in interface java.util.concurrent.locks.LocktryLock in class java.util.concurrent.locks.ReentrantLockpublic boolean tryLock(long time,
java.util.concurrent.TimeUnit unit)
throws java.lang.InterruptedException
tryLock in interface java.util.concurrent.locks.LocktryLock in class java.util.concurrent.locks.ReentrantLockjava.lang.InterruptedExceptionpublic void lockInterruptibly()
throws java.lang.InterruptedException
lockInterruptibly in interface java.util.concurrent.locks.LocklockInterruptibly in class java.util.concurrent.locks.ReentrantLockjava.lang.InterruptedExceptionpublic java.util.concurrent.locks.Condition newCondition()
newCondition in interface java.util.concurrent.locks.LocknewCondition in class java.util.concurrent.locks.ReentrantLockpublic void lock()
lock in interface java.util.concurrent.locks.Locklock in class java.util.concurrent.locks.ReentrantLockpublic void lock(boolean acquireLock)
public void unlock()
unlock in interface java.util.concurrent.locks.Lockunlock in class java.util.concurrent.locks.ReentrantLockpublic static java.util.Set<java.util.List<DLock>> detectCycle()
protected static boolean isSubset(java.util.List<DLock> set, java.util.Set<java.util.List<DLock>> allSets)
protected static boolean isSubset(java.util.List<DLock> subset, java.util.List<DLock> superset)
protected static java.util.Set<DLock> getChildNodes()
protected static java.util.Set<java.util.List<DLock>> detectCycleHelper(DLock node, java.util.List<DLock> history, java.util.HashSet<DLock> cycleNodes)
protected static void stackDump(java.util.List<DLock> nodes)
protected static void printCycle(java.util.List<DLock> cycle)
public static java.lang.String makeStackDumpString(java.lang.StackTraceElement[] stackArray)
public static void main(java.lang.String[] args)