| /* |
| * Written by Doug Lea with assistance from members of JCP JSR-166 |
| * Expert Group and released to the public domain, as explained at |
| * http://creativecommons.org/licenses/publicdomain |
| */ |
| |
| package java.util.concurrent.locks; |
| |
| /** |
| * A synchronizer that may be exclusively owned by a thread. This |
| * class provides a basis for creating locks and related synchronizers |
| * that may entail a notion of ownership. The |
| * <tt>AbstractOwnableSynchronizer</tt> class itself does not manage or |
| * use this information. However, subclasses and tools may use |
| * appropriately maintained values to help control and monitor access |
| * and provide diagnostics. |
| * |
| * @since 1.6 |
| * @author Doug Lea |
| */ |
| public abstract class AbstractOwnableSynchronizer |
| implements java.io.Serializable { |
| |
| /** Use serial ID even though all fields transient. */ |
| private static final long serialVersionUID = 3737899427754241961L; |
| |
| /** |
| * Empty constructor for use by subclasses. |
| */ |
| protected AbstractOwnableSynchronizer() { } |
| |
| /** |
| * The current owner of exclusive mode synchronization. |
| */ |
| private transient Thread exclusiveOwnerThread; |
| |
| /** |
| * Sets the thread that currently owns exclusive access. A |
| * <tt>null</tt> argument indicates that no thread owns access. |
| * This method does not otherwise impose any synchronization or |
| * <tt>volatile</tt> field accesses. |
| */ |
| protected final void setExclusiveOwnerThread(Thread t) { |
| exclusiveOwnerThread = t; |
| } |
| |
| /** |
| * Returns the thread last set by |
| * <tt>setExclusiveOwnerThread</tt>, or <tt>null</tt> if never |
| * set. This method does not otherwise impose any synchronization |
| * or <tt>volatile</tt> field accesses. |
| * @return the owner thread |
| */ |
| protected final Thread getExclusiveOwnerThread() { |
| return exclusiveOwnerThread; |
| } |
| } |