@Override public void initialize() { sync = new Mutex(); assertTrue(sync.getExclusiveQueuedThreads().isEmpty()); sync.acquire(1); assertTrue(sync.getExclusiveQueuedThreads().isEmpty()); }
public void thread3() { waitForTick(1); assertTrue(sync.getExclusiveQueuedThreads().contains(getThread(1))); waitForTick(3); assertTrue(sync.getExclusiveQueuedThreads().contains(getThread(1))); assertTrue(sync.getExclusiveQueuedThreads().contains(getThread(2))); getThread(1).interrupt(); waitForTick(4); assertFalse(sync.getExclusiveQueuedThreads().contains(getThread(1))); assertTrue(sync.getExclusiveQueuedThreads().contains(getThread(2))); sync.release(1); }
/** getExclusiveQueuedThreads returns all exclusive waiting threads */ public void testGetExclusiveQueuedThreads() { final Mutex sync = new Mutex(); Thread t1 = new Thread(new InterruptedSyncRunnable(sync)); Thread t2 = new Thread(new InterruptibleSyncRunnable(sync)); assertHasExclusiveQueuedThreads(sync, NO_THREADS); sync.acquire(); assertHasExclusiveQueuedThreads(sync, NO_THREADS); t1.start(); waitForQueuedThread(sync, t1); assertHasExclusiveQueuedThreads(sync, t1); assertTrue(sync.getExclusiveQueuedThreads().contains(t1)); assertFalse(sync.getExclusiveQueuedThreads().contains(t2)); t2.start(); waitForQueuedThread(sync, t2); assertHasExclusiveQueuedThreads(sync, t1, t2); assertTrue(sync.getExclusiveQueuedThreads().contains(t1)); assertTrue(sync.getExclusiveQueuedThreads().contains(t2)); t1.interrupt(); awaitTermination(t1); assertHasExclusiveQueuedThreads(sync, t2); sync.release(); awaitTermination(t2); assertHasExclusiveQueuedThreads(sync, NO_THREADS); }
@Override public void finish() { assertTrue(sync.getExclusiveQueuedThreads().isEmpty()); }