Note: Before reading further be sure to read the introductory tutorial.
Beginning with version 1.1 the Commons Transaction package features
extended transaction support mechanisms. They are grouped around the
new lock
manager and its implementation
that should be used as the only interface to access locks
associated to some sort of transaction. To do so it offers you locking
methods like lock
and tryLock.
It is important for this manager to be central and have
knowledge of all locking operations to perform tasks like deadlock
detection, incorporate global
transaction timeouts and add convenience methods to release
all locks of a transaction.
Additional to the preference feature
in the new lock, its implementation
has some internal means to record all requests that wait for
(partially) acquiring a lock in the sequence they occur. This is
used by the deadlock detection in the lock manager. Another possible
use is in custom implementations of fair scheduling lock
mechanisms. Even though the specific protected methods
registerWaiter
and
unregisterWaiter
and field
waitingOwners are not made available
through interfaces subclasses can still use them and even make their means public.