--- jsr166/src/test/tck/ReentrantReadWriteLockTest.java 2011/05/02 00:34:12 1.52 +++ jsr166/src/test/tck/ReentrantReadWriteLockTest.java 2011/05/02 01:15:26 1.55 @@ -59,12 +59,13 @@ public class ReentrantReadWriteLockTest } /** - * Releases lock, checking that it had a hold count of 1. + * Releases write lock, checking that it had a hold count of 1. */ - void releaseLock(ReentrantReadWriteLock.WriteLock lock) { - assertTrue(lock.isHeldByCurrentThread()); - lock.unlock(); - assertFalse(lock.isHeldByCurrentThread()); + void releaseWriteLock(ReentrantReadWriteLock lock) { + ReentrantReadWriteLock.WriteLock writeLock = lock.writeLock(); + assertTrue(writeLock.isHeldByCurrentThread()); + writeLock.unlock(); + assertFalse(writeLock.isHeldByCurrentThread()); } /** @@ -207,8 +208,8 @@ public class ReentrantReadWriteLockTest Thread.sleep(SHORT_DELAY_MS); t.interrupt(); - t.join(); - releaseLock(lock.writeLock()); + awaitTermination(t, LONG_DELAY_MS); + releaseWriteLock(lock); } /** @@ -224,8 +225,8 @@ public class ReentrantReadWriteLockTest Thread.sleep(SHORT_DELAY_MS); t.interrupt(); - t.join(); - releaseLock(lock.writeLock()); + awaitTermination(t, LONG_DELAY_MS); + releaseWriteLock(lock); } /** @@ -241,8 +242,8 @@ public class ReentrantReadWriteLockTest Thread.sleep(SHORT_DELAY_MS); t.interrupt(); - t.join(); - releaseLock(lock.writeLock()); + awaitTermination(t, LONG_DELAY_MS); + releaseWriteLock(lock); } /** @@ -258,8 +259,8 @@ public class ReentrantReadWriteLockTest Thread.sleep(SHORT_DELAY_MS); t.interrupt(); - t.join(); - releaseLock(lock.writeLock()); + awaitTermination(t, LONG_DELAY_MS); + releaseWriteLock(lock); } @@ -274,8 +275,8 @@ public class ReentrantReadWriteLockTest assertFalse(lock.writeLock().tryLock()); }}); - t.join(); - lock.writeLock().unlock(); + awaitTermination(t, LONG_DELAY_MS); + releaseWriteLock(lock); } /** @@ -289,8 +290,8 @@ public class ReentrantReadWriteLockTest assertFalse(lock.readLock().tryLock()); }}); - t.join(); - lock.writeLock().unlock(); + awaitTermination(t, LONG_DELAY_MS); + releaseWriteLock(lock); } /** @@ -305,7 +306,7 @@ public class ReentrantReadWriteLockTest lock.readLock().unlock(); }}); - t.join(); + awaitTermination(t, LONG_DELAY_MS); lock.readLock().unlock(); } @@ -328,10 +329,8 @@ public class ReentrantReadWriteLockTest Thread.sleep(SHORT_DELAY_MS); lock.readLock().unlock(); - t1.join(MEDIUM_DELAY_MS); - t2.join(MEDIUM_DELAY_MS); - assertTrue(!t1.isAlive()); - assertTrue(!t2.isAlive()); + awaitTermination(t1, LONG_DELAY_MS); + awaitTermination(t2, LONG_DELAY_MS); } /** @@ -352,11 +351,11 @@ public class ReentrantReadWriteLockTest }}); Thread.sleep(SHORT_DELAY_MS); - lock.writeLock().unlock(); - t1.join(MEDIUM_DELAY_MS); - t2.join(MEDIUM_DELAY_MS); - assertTrue(!t1.isAlive()); - assertTrue(!t2.isAlive()); + assertTrue(t1.isAlive()); + assertTrue(t2.isAlive()); + releaseWriteLock(lock); + awaitTermination(t1, LONG_DELAY_MS); + awaitTermination(t2, LONG_DELAY_MS); } /** @@ -394,10 +393,8 @@ public class ReentrantReadWriteLockTest lock.readLock().lock(); lock.readLock().unlock(); lock.writeLock().unlock(); - t1.join(MEDIUM_DELAY_MS); - t2.join(MEDIUM_DELAY_MS); - assertTrue(!t1.isAlive()); - assertTrue(!t2.isAlive()); + awaitTermination(t1, LONG_DELAY_MS); + awaitTermination(t2, LONG_DELAY_MS); } /** @@ -424,10 +421,8 @@ public class ReentrantReadWriteLockTest lock.readLock().lock(); lock.readLock().unlock(); lock.writeLock().unlock(); - t1.join(MEDIUM_DELAY_MS); - t2.join(MEDIUM_DELAY_MS); - assertTrue(!t1.isAlive()); - assertTrue(!t2.isAlive()); + awaitTermination(t1, LONG_DELAY_MS); + awaitTermination(t2, LONG_DELAY_MS); } @@ -455,10 +450,8 @@ public class ReentrantReadWriteLockTest lock.writeLock().lock(); lock.writeLock().unlock(); lock.writeLock().unlock(); - t1.join(MEDIUM_DELAY_MS); - t2.join(MEDIUM_DELAY_MS); - assertTrue(!t1.isAlive()); - assertTrue(!t2.isAlive()); + awaitTermination(t1, LONG_DELAY_MS); + awaitTermination(t2, LONG_DELAY_MS); } @@ -497,10 +490,8 @@ public class ReentrantReadWriteLockTest lock.readLock().lock(); lock.readLock().unlock(); lock.writeLock().unlock(); - t1.join(MEDIUM_DELAY_MS); - t2.join(MEDIUM_DELAY_MS); - assertTrue(!t1.isAlive()); - assertTrue(!t2.isAlive()); + awaitTermination(t1, LONG_DELAY_MS); + awaitTermination(t2, LONG_DELAY_MS); } @@ -528,10 +519,8 @@ public class ReentrantReadWriteLockTest lock.readLock().lock(); lock.readLock().unlock(); lock.writeLock().unlock(); - t1.join(MEDIUM_DELAY_MS); - t2.join(MEDIUM_DELAY_MS); - assertTrue(!t1.isAlive()); - assertTrue(!t2.isAlive()); + awaitTermination(t1, LONG_DELAY_MS); + awaitTermination(t2, LONG_DELAY_MS); } @@ -562,10 +551,8 @@ public class ReentrantReadWriteLockTest lock.writeLock().lock(); lock.writeLock().unlock(); lock.writeLock().unlock(); - t1.join(MEDIUM_DELAY_MS); - t2.join(MEDIUM_DELAY_MS); - assertTrue(!t1.isAlive()); - assertTrue(!t2.isAlive()); + awaitTermination(t1, LONG_DELAY_MS); + awaitTermination(t2, LONG_DELAY_MS); } @@ -581,7 +568,7 @@ public class ReentrantReadWriteLockTest lock.readLock().unlock(); }}); - t.join(); + awaitTermination(t, LONG_DELAY_MS); lock.readLock().unlock(); } @@ -596,7 +583,7 @@ public class ReentrantReadWriteLockTest assertFalse(lock.writeLock().tryLock()); }}); - t.join(); + awaitTermination(t, LONG_DELAY_MS); lock.readLock().unlock(); } @@ -613,7 +600,7 @@ public class ReentrantReadWriteLockTest lock.readLock().unlock(); }}); - t.join(); + awaitTermination(t, LONG_DELAY_MS); lock.readLock().unlock(); } @@ -630,7 +617,7 @@ public class ReentrantReadWriteLockTest assertFalse(lock.writeLock().tryLock()); }}); - t.join(); + awaitTermination(t, LONG_DELAY_MS); lock.readLock().unlock(); } @@ -647,7 +634,7 @@ public class ReentrantReadWriteLockTest assertFalse(lock.writeLock().tryLock(1, MILLISECONDS)); }}); - t.join(); + awaitTermination(t, LONG_DELAY_MS); assertTrue(lock.writeLock().isHeldByCurrentThread()); lock.writeLock().unlock(); } @@ -663,7 +650,7 @@ public class ReentrantReadWriteLockTest assertFalse(lock.readLock().tryLock(1, MILLISECONDS)); }}); - t.join(); + awaitTermination(t, LONG_DELAY_MS); assertTrue(lock.writeLock().isHeldByCurrentThread()); lock.writeLock().unlock(); } @@ -682,8 +669,8 @@ public class ReentrantReadWriteLockTest Thread.sleep(SHORT_DELAY_MS); t.interrupt(); - t.join(); - releaseLock(lock.writeLock()); + awaitTermination(t, LONG_DELAY_MS); + releaseWriteLock(lock); } /** @@ -699,8 +686,8 @@ public class ReentrantReadWriteLockTest Thread.sleep(SHORT_DELAY_MS); t.interrupt(); - t.join(); - releaseLock(lock.writeLock()); + awaitTermination(t, LONG_DELAY_MS); + releaseWriteLock(lock); } /** @@ -781,8 +768,7 @@ public class ReentrantReadWriteLockTest lock.writeLock().lock(); c.signal(); lock.writeLock().unlock(); - t.join(SHORT_DELAY_MS); - assertFalse(t.isAlive()); + awaitTermination(t, LONG_DELAY_MS); } /** A helper class for uninterruptible wait tests */ @@ -835,9 +821,8 @@ public class ReentrantReadWriteLockTest lock.writeLock().unlock(); } - thread.join(); + awaitTermination(thread, LONG_DELAY_MS); assertTrue(thread.interrupted); - assertFalse(thread.isAlive()); } /** @@ -937,10 +922,8 @@ public class ReentrantReadWriteLockTest lock.writeLock().lock(); c.signalAll(); lock.writeLock().unlock(); - t1.join(SHORT_DELAY_MS); - t2.join(SHORT_DELAY_MS); - assertFalse(t1.isAlive()); - assertFalse(t2.isAlive()); + awaitTermination(t1, LONG_DELAY_MS); + awaitTermination(t2, LONG_DELAY_MS); } /** @@ -984,8 +967,8 @@ public class ReentrantReadWriteLockTest lock.writeLock().unlock(); Thread.sleep(SHORT_DELAY_MS); assertFalse(lock.hasQueuedThreads()); - t1.join(); - t2.join(); + awaitTermination(t1, LONG_DELAY_MS); + awaitTermination(t2, LONG_DELAY_MS); } /** @@ -1025,8 +1008,8 @@ public class ReentrantReadWriteLockTest assertFalse(sync.hasQueuedThread(t1)); Thread.sleep(SHORT_DELAY_MS); assertFalse(sync.hasQueuedThread(t2)); - t1.join(); - t2.join(); + awaitTermination(t1, LONG_DELAY_MS); + awaitTermination(t2, LONG_DELAY_MS); } @@ -1051,8 +1034,8 @@ public class ReentrantReadWriteLockTest lock.writeLock().unlock(); Thread.sleep(SHORT_DELAY_MS); assertEquals(0, lock.getQueueLength()); - t1.join(); - t2.join(); + awaitTermination(t1, LONG_DELAY_MS); + awaitTermination(t2, LONG_DELAY_MS); } /** @@ -1079,8 +1062,8 @@ public class ReentrantReadWriteLockTest lock.writeLock().unlock(); Thread.sleep(SHORT_DELAY_MS); assertTrue(lock.getQueuedThreads().isEmpty()); - t1.join(); - t2.join(); + awaitTermination(t1, LONG_DELAY_MS); + awaitTermination(t2, LONG_DELAY_MS); } /** @@ -1221,8 +1204,7 @@ public class ReentrantReadWriteLockTest assertFalse(lock.hasWaiters(c)); assertEquals(0, lock.getWaitQueueLength(c)); lock.writeLock().unlock(); - t.join(SHORT_DELAY_MS); - assertFalse(t.isAlive()); + awaitTermination(t, LONG_DELAY_MS); } /** @@ -1251,8 +1233,7 @@ public class ReentrantReadWriteLockTest assertFalse(lock.hasWaiters(c)); assertEquals(0, lock.getWaitQueueLength(c)); lock.writeLock().unlock(); - t.join(SHORT_DELAY_MS); - assertFalse(t.isAlive()); + awaitTermination(t, LONG_DELAY_MS); } @@ -1296,10 +1277,8 @@ public class ReentrantReadWriteLockTest assertFalse(lock.hasWaiters(c)); assertTrue(lock.getWaitingThreads(c).isEmpty()); lock.writeLock().unlock(); - t1.join(SHORT_DELAY_MS); - t2.join(SHORT_DELAY_MS); - assertFalse(t1.isAlive()); - assertFalse(t2.isAlive()); + awaitTermination(t1, LONG_DELAY_MS); + awaitTermination(t2, LONG_DELAY_MS); } /**