/** hasContended reports false if no thread has ever blocked, else true */ public void testHasContended() { final Mutex sync = new Mutex(); assertFalse(sync.hasContended()); sync.acquire(); assertFalse(sync.hasContended()); Thread t1 = newStartedThread(new InterruptedSyncRunnable(sync)); waitForQueuedThread(sync, t1); assertTrue(sync.hasContended()); Thread t2 = newStartedThread(new InterruptibleSyncRunnable(sync)); waitForQueuedThread(sync, t2); assertTrue(sync.hasContended()); t1.interrupt(); awaitTermination(t1); assertTrue(sync.hasContended()); sync.release(); awaitTermination(t2); assertTrue(sync.hasContended()); }