7 |
|
|
8 |
|
import static java.util.concurrent.TimeUnit.DAYS; |
9 |
|
import static java.util.concurrent.TimeUnit.MILLISECONDS; |
10 |
– |
import static java.util.concurrent.TimeUnit.SECONDS; |
10 |
|
|
11 |
|
import java.util.ArrayList; |
12 |
|
import java.util.List; |
247 |
|
long s = assertNonZero(lock.writeLock()); |
248 |
|
assertTrue(lock.validate(s)); |
249 |
|
assertFalse(lock.validate(lock.tryWriteLock())); |
250 |
< |
assertFalse(lock.validate(lock.tryWriteLock(0L, SECONDS))); |
250 |
> |
assertFalse(lock.validate(lock.tryWriteLock(randomExpiredTimeout(), |
251 |
> |
randomTimeUnit()))); |
252 |
|
assertFalse(lock.validate(lock.tryReadLock())); |
253 |
< |
assertFalse(lock.validate(lock.tryReadLock(0L, SECONDS))); |
253 |
> |
assertFalse(lock.validate(lock.tryWriteLock(randomExpiredTimeout(), |
254 |
> |
randomTimeUnit()))); |
255 |
|
assertFalse(lock.validate(lock.tryOptimisticRead())); |
256 |
|
lock.unlockWrite(s); |
257 |
|
} |
493 |
|
}}); |
494 |
|
|
495 |
|
await(aboutToLock); |
496 |
< |
waitForThreadToEnterWaitState(t); |
496 |
> |
assertThreadBlocks(t, Thread.State.WAITING); |
497 |
|
assertFalse(lock.isWriteLocked()); |
498 |
|
assertTrue(lock.isReadLocked()); |
499 |
|
lock.unlockRead(rs); |
547 |
|
Thread t2 = newStartedThread(acquireReleaseReadLock); |
548 |
|
|
549 |
|
await(threadsStarted); |
550 |
< |
waitForThreadToEnterWaitState(t1); |
551 |
< |
waitForThreadToEnterWaitState(t2); |
550 |
> |
assertThreadBlocks(t1, Thread.State.WAITING); |
551 |
> |
assertThreadBlocks(t2, Thread.State.WAITING); |
552 |
|
assertTrue(lock.isWriteLocked()); |
553 |
|
assertFalse(lock.isReadLocked()); |
554 |
|
releaseWriteLock(lock, s); |
754 |
|
await(locked); |
755 |
|
assertFalse(lock.validate(p)); |
756 |
|
assertEquals(0L, lock.tryOptimisticRead()); |
757 |
< |
waitForThreadToEnterWaitState(t); |
757 |
> |
assertThreadBlocks(t, Thread.State.WAITING); |
758 |
|
t.interrupt(); |
759 |
|
awaitTermination(t); |
760 |
|
assertTrue(lock.isWriteLocked()); |