--- jsr166/src/test/tck/AbstractQueuedLongSynchronizerTest.java 2009/11/18 08:22:57 1.9 +++ jsr166/src/test/tck/AbstractQueuedLongSynchronizerTest.java 2009/11/21 02:07:26 1.11 @@ -68,31 +68,27 @@ public class AbstractQueuedLongSynchroni } /** - * A runnable calling acquireInterruptibly + * A runnable calling acquireInterruptibly that does not expect to + * be interrupted. */ - class InterruptibleSyncRunnable implements Runnable { + class InterruptibleSyncRunnable extends CheckedRunnable { final Mutex sync; InterruptibleSyncRunnable(Mutex l) { sync = l; } - public void run() { - try { - sync.acquireInterruptibly(1); - } catch (InterruptedException success) {} + public void realRun() throws InterruptedException { + sync.acquireInterruptibly(1); } } /** * A runnable calling acquireInterruptibly that expects to be - * interrupted + * interrupted. */ - class InterruptedSyncRunnable implements Runnable { + class InterruptedSyncRunnable extends CheckedInterruptedRunnable { final Mutex sync; InterruptedSyncRunnable(Mutex l) { sync = l; } - public void run() { - try { - sync.acquireInterruptibly(1); - threadShouldThrow(); - } catch (InterruptedException success) {} + public void realRun() throws InterruptedException { + sync.acquireInterruptibly(1); } } @@ -100,7 +96,7 @@ public class AbstractQueuedLongSynchroni * isHeldExclusively is false upon construction */ public void testIsHeldExclusively() { - Mutex rl = new Mutex(); + Mutex rl = new Mutex(); assertFalse(rl.isHeldExclusively()); } @@ -108,7 +104,7 @@ public class AbstractQueuedLongSynchroni * acquiring released sync succeeds */ public void testAcquire() { - Mutex rl = new Mutex(); + Mutex rl = new Mutex(); rl.acquire(1); assertTrue(rl.isHeldExclusively()); rl.release(1); @@ -119,7 +115,7 @@ public class AbstractQueuedLongSynchroni * tryAcquire on an released sync succeeds */ public void testTryAcquire() { - Mutex rl = new Mutex(); + Mutex rl = new Mutex(); assertTrue(rl.tryAcquire(1)); assertTrue(rl.isHeldExclusively()); rl.release(1); @@ -129,7 +125,7 @@ public class AbstractQueuedLongSynchroni * hasQueuedThreads reports whether there are waiting threads */ public void testhasQueuedThreads() throws InterruptedException { - final Mutex sync = new Mutex(); + final Mutex sync = new Mutex(); Thread t1 = new Thread(new InterruptedSyncRunnable(sync)); Thread t2 = new Thread(new InterruptibleSyncRunnable(sync)); assertFalse(sync.hasQueuedThreads()); @@ -154,7 +150,7 @@ public class AbstractQueuedLongSynchroni * isQueued(null) throws NPE */ public void testIsQueuedNPE() { - final Mutex sync = new Mutex(); + final Mutex sync = new Mutex(); try { sync.isQueued(null); shouldThrow(); @@ -165,7 +161,7 @@ public class AbstractQueuedLongSynchroni * isQueued reports whether a thread is queued. */ public void testIsQueued() throws InterruptedException { - final Mutex sync = new Mutex(); + final Mutex sync = new Mutex(); Thread t1 = new Thread(new InterruptedSyncRunnable(sync)); Thread t2 = new Thread(new InterruptibleSyncRunnable(sync)); assertFalse(sync.isQueued(t1)); @@ -195,7 +191,7 @@ public class AbstractQueuedLongSynchroni * getFirstQueuedThread returns first waiting thread or null if none */ public void testGetFirstQueuedThread() throws InterruptedException { - final Mutex sync = new Mutex(); + final Mutex sync = new Mutex(); Thread t1 = new Thread(new InterruptedSyncRunnable(sync)); Thread t2 = new Thread(new InterruptibleSyncRunnable(sync)); assertNull(sync.getFirstQueuedThread()); @@ -222,7 +218,7 @@ public class AbstractQueuedLongSynchroni * hasContended reports false if no thread has ever blocked, else true */ public void testHasContended() throws InterruptedException { - final Mutex sync = new Mutex(); + final Mutex sync = new Mutex(); Thread t1 = new Thread(new InterruptedSyncRunnable(sync)); Thread t2 = new Thread(new InterruptibleSyncRunnable(sync)); assertFalse(sync.hasContended()); @@ -247,7 +243,7 @@ public class AbstractQueuedLongSynchroni * getQueuedThreads includes waiting threads */ public void testGetQueuedThreads() throws InterruptedException { - final Mutex sync = new Mutex(); + final Mutex sync = new Mutex(); Thread t1 = new Thread(new InterruptedSyncRunnable(sync)); Thread t2 = new Thread(new InterruptibleSyncRunnable(sync)); assertTrue(sync.getQueuedThreads().isEmpty()); @@ -275,7 +271,7 @@ public class AbstractQueuedLongSynchroni * getExclusiveQueuedThreads includes waiting threads */ public void testGetExclusiveQueuedThreads() throws InterruptedException { - final Mutex sync = new Mutex(); + final Mutex sync = new Mutex(); Thread t1 = new Thread(new InterruptedSyncRunnable(sync)); Thread t2 = new Thread(new InterruptibleSyncRunnable(sync)); assertTrue(sync.getExclusiveQueuedThreads().isEmpty()); @@ -303,7 +299,7 @@ public class AbstractQueuedLongSynchroni * getSharedQueuedThreads does not include exclusively waiting threads */ public void testGetSharedQueuedThreads() throws InterruptedException { - final Mutex sync = new Mutex(); + final Mutex sync = new Mutex(); Thread t1 = new Thread(new InterruptedSyncRunnable(sync)); Thread t2 = new Thread(new InterruptibleSyncRunnable(sync)); assertTrue(sync.getSharedQueuedThreads().isEmpty()); @@ -329,16 +325,12 @@ public class AbstractQueuedLongSynchroni * tryAcquireNanos is interruptible. */ public void testInterruptedException2() throws InterruptedException { - final Mutex sync = new Mutex(); - sync.acquire(1); - Thread t = new Thread(new Runnable() { - public void run() { - try { - sync.tryAcquireNanos(1, MEDIUM_DELAY_MS * 1000 * 1000); - threadShouldThrow(); - } catch (InterruptedException success) {} - } - }); + final Mutex sync = new Mutex(); + sync.acquire(1); + Thread t = new Thread(new CheckedInterruptedRunnable() { + public void realRun() throws InterruptedException { + sync.tryAcquireNanos(1, MEDIUM_DELAY_MS * 1000 * 1000); + }}); t.start(); t.interrupt(); @@ -350,13 +342,12 @@ public class AbstractQueuedLongSynchroni * TryAcquire on exclusively held sync fails */ public void testTryAcquireWhenSynced() throws InterruptedException { - final Mutex sync = new Mutex(); - sync.acquire(1); - Thread t = new Thread(new Runnable() { - public void run() { - threadAssertFalse(sync.tryAcquire(1)); - } - }); + final Mutex sync = new Mutex(); + sync.acquire(1); + Thread t = new Thread(new CheckedRunnable() { + public void realRun() { + threadAssertFalse(sync.tryAcquire(1)); + }}); t.start(); t.join(); @@ -367,17 +358,12 @@ public class AbstractQueuedLongSynchroni * tryAcquireNanos on an exclusively held sync times out */ public void testAcquireNanos_Timeout() throws InterruptedException { - final Mutex sync = new Mutex(); - sync.acquire(1); - Thread t = new Thread(new Runnable() { - public void run() { - try { - threadAssertFalse(sync.tryAcquireNanos(1, 1000 * 1000)); - } catch (Exception ex) { - threadUnexpectedException(ex); - } - } - }); + final Mutex sync = new Mutex(); + sync.acquire(1); + Thread t = new Thread(new CheckedRunnable() { + public void realRun() throws InterruptedException { + threadAssertFalse(sync.tryAcquireNanos(1, 1000 * 1000)); + }}); t.start(); t.join(); @@ -389,23 +375,17 @@ public class AbstractQueuedLongSynchroni * getState is true when acquired and false when not */ public void testGetState() throws InterruptedException { - final Mutex sync = new Mutex(); - sync.acquire(1); - assertTrue(sync.isHeldExclusively()); - sync.release(1); - assertFalse(sync.isHeldExclusively()); - Thread t = new Thread(new Runnable() { - public void run() { - sync.acquire(1); - try { - Thread.sleep(SMALL_DELAY_MS); - } - catch (Exception e) { - threadUnexpectedException(e); - } - sync.release(1); - } - }); + final Mutex sync = new Mutex(); + sync.acquire(1); + assertTrue(sync.isHeldExclusively()); + sync.release(1); + assertFalse(sync.isHeldExclusively()); + Thread t = new Thread(new CheckedRunnable() { + public void realRun() throws InterruptedException { + sync.acquire(1); + Thread.sleep(SMALL_DELAY_MS); + sync.release(1); + }}); t.start(); Thread.sleep(SHORT_DELAY_MS); @@ -419,9 +399,9 @@ public class AbstractQueuedLongSynchroni * acquireInterruptibly is interruptible. */ public void testAcquireInterruptibly1() throws InterruptedException { - final Mutex sync = new Mutex(); - sync.acquire(1); - Thread t = new Thread(new InterruptedSyncRunnable(sync)); + final Mutex sync = new Mutex(); + sync.acquire(1); + Thread t = new Thread(new InterruptedSyncRunnable(sync)); t.start(); Thread.sleep(SHORT_DELAY_MS); t.interrupt(); @@ -434,9 +414,9 @@ public class AbstractQueuedLongSynchroni * acquireInterruptibly succeeds when released, else is interruptible */ public void testAcquireInterruptibly2() throws InterruptedException { - final Mutex sync = new Mutex(); + final Mutex sync = new Mutex(); sync.acquireInterruptibly(1); - Thread t = new Thread(new InterruptedSyncRunnable(sync)); + Thread t = new Thread(new InterruptedSyncRunnable(sync)); t.start(); t.interrupt(); assertTrue(sync.isHeldExclusively()); @@ -447,7 +427,7 @@ public class AbstractQueuedLongSynchroni * owns is true for a condition created by sync else false */ public void testOwns() { - final Mutex sync = new Mutex(); + final Mutex sync = new Mutex(); final AbstractQueuedLongSynchronizer.ConditionObject c = sync.newCondition(); final Mutex sync2 = new Mutex(); assertTrue(sync.owns(c)); @@ -458,34 +438,31 @@ public class AbstractQueuedLongSynchroni * Calling await without holding sync throws IllegalMonitorStateException */ public void testAwait_IllegalMonitor() throws InterruptedException { - final Mutex sync = new Mutex(); + final Mutex sync = new Mutex(); final AbstractQueuedLongSynchronizer.ConditionObject c = sync.newCondition(); try { c.await(); shouldThrow(); - } - catch (IllegalMonitorStateException success) { - } + } catch (IllegalMonitorStateException success) {} } /** * Calling signal without holding sync throws IllegalMonitorStateException */ public void testSignal_IllegalMonitor() throws InterruptedException { - final Mutex sync = new Mutex(); + final Mutex sync = new Mutex(); final AbstractQueuedLongSynchronizer.ConditionObject c = sync.newCondition(); try { c.signal(); shouldThrow(); - } - catch (IllegalMonitorStateException success) {} + } catch (IllegalMonitorStateException success) {} } /** * awaitNanos without a signal times out */ public void testAwaitNanos_Timeout() throws InterruptedException { - final Mutex sync = new Mutex(); + final Mutex sync = new Mutex(); final AbstractQueuedLongSynchronizer.ConditionObject c = sync.newCondition(); sync.acquire(1); long t = c.awaitNanos(100); @@ -497,7 +474,7 @@ public class AbstractQueuedLongSynchroni * Timed await without a signal times out */ public void testAwait_Timeout() throws InterruptedException { - final Mutex sync = new Mutex(); + final Mutex sync = new Mutex(); final AbstractQueuedLongSynchronizer.ConditionObject c = sync.newCondition(); sync.acquire(1); assertFalse(c.await(SHORT_DELAY_MS, TimeUnit.MILLISECONDS)); @@ -508,7 +485,7 @@ public class AbstractQueuedLongSynchroni * awaitUntil without a signal times out */ public void testAwaitUntil_Timeout() throws InterruptedException { - final Mutex sync = new Mutex(); + final Mutex sync = new Mutex(); final AbstractQueuedLongSynchronizer.ConditionObject c = sync.newCondition(); sync.acquire(1); java.util.Date d = new java.util.Date(); @@ -520,20 +497,14 @@ public class AbstractQueuedLongSynchroni * await returns when signalled */ public void testAwait() throws InterruptedException { - final Mutex sync = new Mutex(); + final Mutex sync = new Mutex(); final AbstractQueuedLongSynchronizer.ConditionObject c = sync.newCondition(); - Thread t = new Thread(new Runnable() { - public void run() { - try { - sync.acquire(1); - c.await(); - sync.release(1); - } - catch (InterruptedException e) { - threadUnexpectedException(e); - } - } - }); + Thread t = new Thread(new CheckedRunnable() { + public void realRun() throws InterruptedException { + sync.acquire(1); + c.await(); + sync.release(1); + }}); t.start(); Thread.sleep(SHORT_DELAY_MS); @@ -550,7 +521,7 @@ public class AbstractQueuedLongSynchroni * hasWaiters throws NPE if null */ public void testHasWaitersNPE() { - final Mutex sync = new Mutex(); + final Mutex sync = new Mutex(); try { sync.hasWaiters(null); shouldThrow(); @@ -561,7 +532,7 @@ public class AbstractQueuedLongSynchroni * getWaitQueueLength throws NPE if null */ public void testGetWaitQueueLengthNPE() { - final Mutex sync = new Mutex(); + final Mutex sync = new Mutex(); try { sync.getWaitQueueLength(null); shouldThrow(); @@ -573,7 +544,7 @@ public class AbstractQueuedLongSynchroni * getWaitingThreads throws NPE if null */ public void testGetWaitingThreadsNPE() { - final Mutex sync = new Mutex(); + final Mutex sync = new Mutex(); try { sync.getWaitingThreads(null); shouldThrow(); @@ -585,9 +556,9 @@ public class AbstractQueuedLongSynchroni * hasWaiters throws IAE if not owned */ public void testHasWaitersIAE() { - final Mutex sync = new Mutex(); + final Mutex sync = new Mutex(); final AbstractQueuedLongSynchronizer.ConditionObject c = sync.newCondition(); - final Mutex sync2 = new Mutex(); + final Mutex sync2 = new Mutex(); try { sync2.hasWaiters(c); shouldThrow(); @@ -598,7 +569,7 @@ public class AbstractQueuedLongSynchroni * hasWaiters throws IMSE if not synced */ public void testHasWaitersIMSE() { - final Mutex sync = new Mutex(); + final Mutex sync = new Mutex(); final AbstractQueuedLongSynchronizer.ConditionObject c = sync.newCondition(); try { sync.hasWaiters(c); @@ -611,9 +582,9 @@ public class AbstractQueuedLongSynchroni * getWaitQueueLength throws IAE if not owned */ public void testGetWaitQueueLengthIAE() { - final Mutex sync = new Mutex(); + final Mutex sync = new Mutex(); final AbstractQueuedLongSynchronizer.ConditionObject c = sync.newCondition(); - final Mutex sync2 = new Mutex(); + final Mutex sync2 = new Mutex(); try { sync2.getWaitQueueLength(c); shouldThrow(); @@ -624,7 +595,7 @@ public class AbstractQueuedLongSynchroni * getWaitQueueLength throws IMSE if not synced */ public void testGetWaitQueueLengthIMSE() { - final Mutex sync = new Mutex(); + final Mutex sync = new Mutex(); final AbstractQueuedLongSynchronizer.ConditionObject c = sync.newCondition(); try { sync.getWaitQueueLength(c); @@ -637,9 +608,9 @@ public class AbstractQueuedLongSynchroni * getWaitingThreads throws IAE if not owned */ public void testGetWaitingThreadsIAE() { - final Mutex sync = new Mutex(); + final Mutex sync = new Mutex(); final AbstractQueuedLongSynchronizer.ConditionObject c = sync.newCondition(); - final Mutex sync2 = new Mutex(); + final Mutex sync2 = new Mutex(); try { sync2.getWaitingThreads(c); shouldThrow(); @@ -650,7 +621,7 @@ public class AbstractQueuedLongSynchroni * getWaitingThreads throws IMSE if not synced */ public void testGetWaitingThreadsIMSE() { - final Mutex sync = new Mutex(); + final Mutex sync = new Mutex(); final AbstractQueuedLongSynchronizer.ConditionObject c = sync.newCondition(); try { sync.getWaitingThreads(c); @@ -664,22 +635,16 @@ public class AbstractQueuedLongSynchroni * hasWaiters returns true when a thread is waiting, else false */ public void testHasWaiters() throws InterruptedException { - final Mutex sync = new Mutex(); + final Mutex sync = new Mutex(); final AbstractQueuedLongSynchronizer.ConditionObject c = sync.newCondition(); - Thread t = new Thread(new Runnable() { - public void run() { - try { - sync.acquire(1); - threadAssertFalse(sync.hasWaiters(c)); - threadAssertEquals(0, sync.getWaitQueueLength(c)); - c.await(); - sync.release(1); - } - catch (InterruptedException e) { - threadUnexpectedException(e); - } - } - }); + Thread t = new Thread(new CheckedRunnable() { + public void realRun() throws InterruptedException { + sync.acquire(1); + threadAssertFalse(sync.hasWaiters(c)); + threadAssertEquals(0, sync.getWaitQueueLength(c)); + c.await(); + sync.release(1); + }}); t.start(); Thread.sleep(SHORT_DELAY_MS); @@ -701,37 +666,25 @@ public class AbstractQueuedLongSynchroni * getWaitQueueLength returns number of waiting threads */ public void testGetWaitQueueLength() throws InterruptedException { - final Mutex sync = new Mutex(); + final Mutex sync = new Mutex(); final AbstractQueuedLongSynchronizer.ConditionObject c = sync.newCondition(); - Thread t1 = new Thread(new Runnable() { - public void run() { - try { - sync.acquire(1); - threadAssertFalse(sync.hasWaiters(c)); - threadAssertEquals(0, sync.getWaitQueueLength(c)); - c.await(); - sync.release(1); - } - catch (InterruptedException e) { - threadUnexpectedException(e); - } - } - }); - - Thread t2 = new Thread(new Runnable() { - public void run() { - try { - sync.acquire(1); - threadAssertTrue(sync.hasWaiters(c)); - threadAssertEquals(1, sync.getWaitQueueLength(c)); - c.await(); - sync.release(1); - } - catch (InterruptedException e) { - threadUnexpectedException(e); - } - } - }); + Thread t1 = new Thread(new CheckedRunnable() { + public void realRun() throws InterruptedException { + sync.acquire(1); + threadAssertFalse(sync.hasWaiters(c)); + threadAssertEquals(0, sync.getWaitQueueLength(c)); + c.await(); + sync.release(1); + }}); + + Thread t2 = new Thread(new CheckedRunnable() { + public void realRun() throws InterruptedException { + sync.acquire(1); + threadAssertTrue(sync.hasWaiters(c)); + threadAssertEquals(1, sync.getWaitQueueLength(c)); + c.await(); + sync.release(1); + }}); t1.start(); Thread.sleep(SHORT_DELAY_MS); @@ -757,35 +710,23 @@ public class AbstractQueuedLongSynchroni * getWaitingThreads returns only and all waiting threads */ public void testGetWaitingThreads() throws InterruptedException { - final Mutex sync = new Mutex(); + final Mutex sync = new Mutex(); final AbstractQueuedLongSynchronizer.ConditionObject c = sync.newCondition(); - Thread t1 = new Thread(new Runnable() { - public void run() { - try { - sync.acquire(1); - threadAssertTrue(sync.getWaitingThreads(c).isEmpty()); - c.await(); - sync.release(1); - } - catch (InterruptedException e) { - threadUnexpectedException(e); - } - } - }); - - Thread t2 = new Thread(new Runnable() { - public void run() { - try { - sync.acquire(1); - threadAssertFalse(sync.getWaitingThreads(c).isEmpty()); - c.await(); - sync.release(1); - } - catch (InterruptedException e) { - threadUnexpectedException(e); - } - } - }); + Thread t1 = new Thread(new CheckedRunnable() { + public void realRun() throws InterruptedException { + sync.acquire(1); + threadAssertTrue(sync.getWaitingThreads(c).isEmpty()); + c.await(); + sync.release(1); + }}); + + Thread t2 = new Thread(new CheckedRunnable() { + public void realRun() throws InterruptedException { + sync.acquire(1); + threadAssertFalse(sync.getWaitingThreads(c).isEmpty()); + c.await(); + sync.release(1); + }}); sync.acquire(1); assertTrue(sync.getWaitingThreads(c).isEmpty()); @@ -817,15 +758,14 @@ public class AbstractQueuedLongSynchroni * awaitUninterruptibly doesn't abort on interrupt */ public void testAwaitUninterruptibly() throws InterruptedException { - final Mutex sync = new Mutex(); + final Mutex sync = new Mutex(); final AbstractQueuedLongSynchronizer.ConditionObject c = sync.newCondition(); - Thread t = new Thread(new Runnable() { - public void run() { - sync.acquire(1); - c.awaitUninterruptibly(); - sync.release(1); - } - }); + Thread t = new Thread(new CheckedRunnable() { + public void realRun() { + sync.acquire(1); + c.awaitUninterruptibly(); + sync.release(1); + }}); t.start(); Thread.sleep(SHORT_DELAY_MS); @@ -841,20 +781,14 @@ public class AbstractQueuedLongSynchroni * await is interruptible */ public void testAwait_Interrupt() throws InterruptedException { - final Mutex sync = new Mutex(); + final Mutex sync = new Mutex(); final AbstractQueuedLongSynchronizer.ConditionObject c = sync.newCondition(); - Thread t = new Thread(new Runnable() { - public void run() { - try { - sync.acquire(1); - c.await(); - sync.release(1); - threadShouldThrow(); - } - catch (InterruptedException success) { - } - } - }); + Thread t = new Thread(new CheckedInterruptedRunnable() { + public void realRun() throws InterruptedException { + sync.acquire(1); + c.await(); + sync.release(1); + }}); t.start(); Thread.sleep(SHORT_DELAY_MS); @@ -867,20 +801,14 @@ public class AbstractQueuedLongSynchroni * awaitNanos is interruptible */ public void testAwaitNanos_Interrupt() throws InterruptedException { - final Mutex sync = new Mutex(); + final Mutex sync = new Mutex(); final AbstractQueuedLongSynchronizer.ConditionObject c = sync.newCondition(); - Thread t = new Thread(new Runnable() { - public void run() { - try { - sync.acquire(1); - c.awaitNanos(1000 * 1000 * 1000); // 1 sec - sync.release(1); - threadShouldThrow(); - } - catch (InterruptedException success) { - } - } - }); + Thread t = new Thread(new CheckedInterruptedRunnable() { + public void realRun() throws InterruptedException { + sync.acquire(1); + c.awaitNanos(1000 * 1000 * 1000); // 1 sec + sync.release(1); + }}); t.start(); Thread.sleep(SHORT_DELAY_MS); @@ -893,21 +821,15 @@ public class AbstractQueuedLongSynchroni * awaitUntil is interruptible */ public void testAwaitUntil_Interrupt() throws InterruptedException { - final Mutex sync = new Mutex(); + final Mutex sync = new Mutex(); final AbstractQueuedLongSynchronizer.ConditionObject c = sync.newCondition(); - Thread t = new Thread(new Runnable() { - public void run() { - try { - sync.acquire(1); - java.util.Date d = new java.util.Date(); - c.awaitUntil(new java.util.Date(d.getTime() + 10000)); - sync.release(1); - threadShouldThrow(); - } - catch (InterruptedException success) { - } - } - }); + Thread t = new Thread(new CheckedInterruptedRunnable() { + public void realRun() throws InterruptedException { + sync.acquire(1); + java.util.Date d = new java.util.Date(); + c.awaitUntil(new java.util.Date(d.getTime() + 10000)); + sync.release(1); + }}); t.start(); Thread.sleep(SHORT_DELAY_MS); @@ -920,33 +842,21 @@ public class AbstractQueuedLongSynchroni * signalAll wakes up all threads */ public void testSignalAll() throws InterruptedException { - final Mutex sync = new Mutex(); + final Mutex sync = new Mutex(); final AbstractQueuedLongSynchronizer.ConditionObject c = sync.newCondition(); - Thread t1 = new Thread(new Runnable() { - public void run() { - try { - sync.acquire(1); - c.await(); - sync.release(1); - } - catch (InterruptedException e) { - threadUnexpectedException(); - } - } - }); - - Thread t2 = new Thread(new Runnable() { - public void run() { - try { - sync.acquire(1); - c.await(); - sync.release(1); - } - catch (InterruptedException e) { - threadUnexpectedException(); - } - } - }); + Thread t1 = new Thread(new CheckedRunnable() { + public void realRun() throws InterruptedException { + sync.acquire(1); + c.await(); + sync.release(1); + }}); + + Thread t2 = new Thread(new CheckedRunnable() { + public void realRun() throws InterruptedException { + sync.acquire(1); + c.await(); + sync.release(1); + }}); t1.start(); t2.start(); @@ -997,41 +907,36 @@ public class AbstractQueuedLongSynchroni * tryReleaseShared setting state changes getState */ public void testGetStateWithReleaseShared() { - final BooleanLatch l = new BooleanLatch(); - assertFalse(l.isSignalled()); - l.releaseShared(0); - assertTrue(l.isSignalled()); + final BooleanLatch l = new BooleanLatch(); + assertFalse(l.isSignalled()); + l.releaseShared(0); + assertTrue(l.isSignalled()); } /** * releaseShared has no effect when already signalled */ public void testReleaseShared() { - final BooleanLatch l = new BooleanLatch(); - assertFalse(l.isSignalled()); - l.releaseShared(0); - assertTrue(l.isSignalled()); - l.releaseShared(0); - assertTrue(l.isSignalled()); + final BooleanLatch l = new BooleanLatch(); + assertFalse(l.isSignalled()); + l.releaseShared(0); + assertTrue(l.isSignalled()); + l.releaseShared(0); + assertTrue(l.isSignalled()); } /** * acquireSharedInterruptibly returns after release, but not before */ public void testAcquireSharedInterruptibly() throws InterruptedException { - final BooleanLatch l = new BooleanLatch(); + final BooleanLatch l = new BooleanLatch(); - Thread t = new Thread(new Runnable() { - public void run() { - try { - threadAssertFalse(l.isSignalled()); - l.acquireSharedInterruptibly(0); - threadAssertTrue(l.isSignalled()); - } catch (InterruptedException e) { - threadUnexpectedException(); - } - } - }); + Thread t = new Thread(new CheckedRunnable() { + public void realRun() throws InterruptedException { + threadAssertFalse(l.isSignalled()); + l.acquireSharedInterruptibly(0); + threadAssertTrue(l.isSignalled()); + }}); t.start(); assertFalse(l.isSignalled()); @@ -1046,20 +951,14 @@ public class AbstractQueuedLongSynchroni * acquireSharedTimed returns after release */ public void testAsquireSharedTimed() throws InterruptedException { - final BooleanLatch l = new BooleanLatch(); + final BooleanLatch l = new BooleanLatch(); - Thread t = new Thread(new Runnable() { - public void run() { - try { - threadAssertFalse(l.isSignalled()); - threadAssertTrue(l.tryAcquireSharedNanos(0, MEDIUM_DELAY_MS* 1000 * 1000)); - threadAssertTrue(l.isSignalled()); - - } catch (InterruptedException e) { - threadUnexpectedException(); - } - } - }); + Thread t = new Thread(new CheckedRunnable() { + public void realRun() throws InterruptedException { + threadAssertFalse(l.isSignalled()); + threadAssertTrue(l.tryAcquireSharedNanos(0, MEDIUM_DELAY_MS* 1000 * 1000)); + threadAssertTrue(l.isSignalled()); + }}); t.start(); assertFalse(l.isSignalled()); @@ -1074,17 +973,13 @@ public class AbstractQueuedLongSynchroni */ public void testAcquireSharedInterruptibly_InterruptedException() throws InterruptedException { final BooleanLatch l = new BooleanLatch(); - Thread t = new Thread(new Runnable() { - public void run() { - try { - threadAssertFalse(l.isSignalled()); - l.acquireSharedInterruptibly(0); - threadShouldThrow(); - } catch (InterruptedException success) {} - } - }); + Thread t = new Thread(new CheckedInterruptedRunnable() { + public void realRun() throws InterruptedException { + threadAssertFalse(l.isSignalled()); + l.acquireSharedInterruptibly(0); + }}); - t.start(); + t.start(); assertFalse(l.isSignalled()); t.interrupt(); t.join(); @@ -1095,15 +990,11 @@ public class AbstractQueuedLongSynchroni */ public void testAcquireSharedNanos_InterruptedException() throws InterruptedException { final BooleanLatch l = new BooleanLatch(); - Thread t = new Thread(new Runnable() { - public void run() { - try { - threadAssertFalse(l.isSignalled()); - l.tryAcquireSharedNanos(0, SMALL_DELAY_MS* 1000 * 1000); - threadShouldThrow(); - } catch (InterruptedException success) {} - } - }); + Thread t = new Thread(new CheckedInterruptedRunnable() { + public void realRun() throws InterruptedException { + threadAssertFalse(l.isSignalled()); + l.tryAcquireSharedNanos(0, SMALL_DELAY_MS* 1000 * 1000); + }}); t.start(); Thread.sleep(SHORT_DELAY_MS); @@ -1117,16 +1008,11 @@ public class AbstractQueuedLongSynchroni */ public void testAcquireSharedNanos_Timeout() throws InterruptedException { final BooleanLatch l = new BooleanLatch(); - Thread t = new Thread(new Runnable() { - public void run() { - try { - threadAssertFalse(l.isSignalled()); - threadAssertFalse(l.tryAcquireSharedNanos(0, SMALL_DELAY_MS* 1000 * 1000)); - } catch (InterruptedException ie) { - threadUnexpectedException(); - } - } - }); + Thread t = new Thread(new CheckedRunnable() { + public void realRun() throws InterruptedException { + threadAssertFalse(l.isSignalled()); + threadAssertFalse(l.tryAcquireSharedNanos(0, SMALL_DELAY_MS* 1000 * 1000)); + }}); t.start(); Thread.sleep(SHORT_DELAY_MS); @@ -1134,5 +1020,4 @@ public class AbstractQueuedLongSynchroni t.join(); } - }