28 |
|
* in method {@link #unlockWrite} to release the lock. Untimed and |
29 |
|
* timed versions of {@code tryWriteLock} are also provided. When |
30 |
|
* the lock is held in write mode, no read locks may be obtained, |
31 |
< |
* and all optimistic read validations will fail. </li> |
31 |
> |
* and all optimistic read validations will fail. |
32 |
|
* |
33 |
|
* <li><b>Reading.</b> Method {@link #readLock} possibly blocks |
34 |
|
* waiting for non-exclusive access, returning a stamp that can be |
35 |
|
* used in method {@link #unlockRead} to release the lock. Untimed |
36 |
< |
* and timed versions of {@code tryReadLock} are also provided. </li> |
36 |
> |
* and timed versions of {@code tryReadLock} are also provided. |
37 |
|
* |
38 |
|
* <li><b>Optimistic Reading.</b> Method {@link #tryOptimisticRead} |
39 |
|
* returns a non-zero stamp only if the lock is not currently held |
51 |
|
* invoke method {@code validate()}. For example, such steps are |
52 |
|
* typically required when first reading an object or array |
53 |
|
* reference, and then accessing one of its fields, elements or |
54 |
< |
* methods. </li> |
54 |
> |
* methods. |
55 |
|
* |
56 |
|
* </ul> |
57 |
|
* |
1277 |
|
* AbstractQueuedSynchronizer (see its detailed explanation in AQS |
1278 |
|
* internal documentation). |
1279 |
|
* |
1280 |
< |
* @param node if nonnull, the waiter |
1280 |
> |
* @param node if non-null, the waiter |
1281 |
|
* @param group either node or the group node is cowaiting with |
1282 |
|
* @param interrupted if already interrupted |
1283 |
|
* @return INTERRUPTED if interrupted or Thread.interrupted, else zero |