1/* 2 * Written by Doug Lea with assistance from members of JCP JSR-166 3 * Expert Group and released to the public domain, as explained at 4 * http://creativecommons.org/publicdomain/zero/1.0/ 5 */ 6 7/** 8 * Interfaces and classes providing a framework for locking and waiting 9 * for conditions that is distinct from built-in synchronization and 10 * monitors. The framework permits much greater flexibility in the use of 11 * locks and conditions, at the expense of more awkward syntax. 12 * 13 * <p>The {@link java.util.concurrent.locks.Lock} interface supports 14 * locking disciplines that differ in semantics (reentrant, fair, etc), 15 * and that can be used in non-block-structured contexts including 16 * hand-over-hand and lock reordering algorithms. The main implementation 17 * is {@link java.util.concurrent.locks.ReentrantLock}. 18 * 19 * <p>The {@link java.util.concurrent.locks.ReadWriteLock} interface 20 * similarly defines locks that may be shared among readers but are 21 * exclusive to writers. Only a single implementation, {@link 22 * java.util.concurrent.locks.ReentrantReadWriteLock}, is provided, since 23 * it covers most standard usage contexts. But programmers may create 24 * their own implementations to cover nonstandard requirements. 25 * 26 * <p>The {@link java.util.concurrent.locks.Condition} interface 27 * describes condition variables that may be associated with Locks. 28 * These are similar in usage to the implicit monitors accessed using 29 * {@code Object.wait}, but offer extended capabilities. 30 * In particular, multiple {@code Condition} objects may be associated 31 * with a single {@code Lock}. To avoid compatibility issues, the 32 * names of {@code Condition} methods are different from the 33 * corresponding {@code Object} versions. 34 * 35 * <p>The {@link java.util.concurrent.locks.AbstractQueuedSynchronizer} 36 * class serves as a useful superclass for defining locks and other 37 * synchronizers that rely on queuing blocked threads. The {@link 38 * java.util.concurrent.locks.AbstractQueuedLongSynchronizer} class 39 * provides the same functionality but extends support to 64 bits of 40 * synchronization state. Both extend class {@link 41 * java.util.concurrent.locks.AbstractOwnableSynchronizer}, a simple 42 * class that helps record the thread currently holding exclusive 43 * synchronization. The {@link java.util.concurrent.locks.LockSupport} 44 * class provides lower-level blocking and unblocking support that is 45 * useful for those developers implementing their own customized lock 46 * classes. 47 * 48 * @since 1.5 49 */ 50package java.util.concurrent.locks; 51