343 |
|
*/ |
344 |
|
public void testInterruptibleOperationsThrowInterruptedExceptionWriteLockedInterrupted() { |
345 |
|
final StampedLock lock = new StampedLock(); |
346 |
< |
long s = lock.writeLock(); |
346 |
> |
long stamp = lock.writeLock(); |
347 |
|
|
348 |
|
Action[] interruptibleLockBlockingActions = { |
349 |
|
() -> lock.writeLockInterruptibly(), |
358 |
|
shuffle(interruptibleLockBlockingActions); |
359 |
|
|
360 |
|
assertThrowInterruptedExceptionWhenInterrupted(interruptibleLockBlockingActions); |
361 |
+ |
|
362 |
+ |
releaseWriteLock(lock, stamp); |
363 |
|
} |
364 |
|
|
365 |
|
/** |
367 |
|
*/ |
368 |
|
public void testInterruptibleOperationsThrowInterruptedExceptionReadLockedInterrupted() { |
369 |
|
final StampedLock lock = new StampedLock(); |
370 |
< |
long s = lock.readLock(); |
370 |
> |
long stamp = lock.readLock(); |
371 |
|
|
372 |
|
Action[] interruptibleLockBlockingActions = { |
373 |
|
() -> lock.writeLockInterruptibly(), |
378 |
|
shuffle(interruptibleLockBlockingActions); |
379 |
|
|
380 |
|
assertThrowInterruptedExceptionWhenInterrupted(interruptibleLockBlockingActions); |
381 |
+ |
|
382 |
+ |
releaseReadLock(lock, stamp); |
383 |
|
} |
384 |
|
|
385 |
|
/** |
703 |
|
lock.unlockWrite(s); |
704 |
|
s = lock.readLock(); |
705 |
|
assertTrue(lock.toString().contains("Read-locks")); |
706 |
+ |
releaseReadLock(lock, s); |
707 |
|
} |
708 |
|
|
709 |
|
/** |
1401 |
|
final long testDurationMillis = expensiveTests ? 1000 : 2; |
1402 |
|
final int nTasks = ThreadLocalRandom.current().nextInt(1, 10); |
1403 |
|
final AtomicBoolean done = new AtomicBoolean(false); |
1404 |
< |
final List<CompletableFuture> futures = new ArrayList<>(); |
1404 |
> |
final List<CompletableFuture<?>> futures = new ArrayList<>(); |
1405 |
|
final List<Callable<Long>> stampedWriteLockers = List.of( |
1406 |
|
() -> sl.writeLock(), |
1407 |
|
() -> writeLockInterruptiblyUninterrupted(sl), |